Laden...

Liste von Listen nicht instanziiert in Konfigurationsdatei

Erstellt von arakhsh_j vor 13 Jahren Letzter Beitrag vor 13 Jahren 1.354 Views
Thema geschlossen
A
arakhsh_j Themenstarter:in
30 Beiträge seit 2010
vor 13 Jahren
Liste von Listen nicht instanziiert in Konfigurationsdatei

Hallo,

ich möchte eine Kofig-Datei mit VS-2008 erstellen.
bei Setting habe ich berets die Datei Typ als Arraylist eingestellt.


namespace excel_sql.Properties {
    
    
    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
    [global::System.CodeDom.Compiler.GeneratedCodeAttribute ("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "8.0.0.0")]
    internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
        
        private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
        
        public static Settings Default {
            get {
                return defaultInstance;
            }
        }
        
        [global::System.Configuration.ApplicationScopedSettingAttribute()]
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
        public global::System.Collections.ArrayList MyLoginArray {
            get {
                return ((global::System.Collections.ArrayList)(this["MyLoginArray"]));
            }
        }
    }

und im Programm Code möchte ich mehere Arrays zu o.g. Arraylist hinzufügen.
dabei bekomme ich immer die Meldung das das Objekt (MyLoginArray) nicht instzansiert ist!!


 private void MyLoginDaten()
    { 
       private static Settings setting = new Settings();
       public string[] LoginArray = new string[5]; 

      LoginArray[0] =  stdschematxt.Text;
      LoginArray[1] = servertxt.Text;
      LoginArray[2] = nutzertxt.Text;
      LoginArray[3] = passworttxt.Text;
      LoginArray[4] = stdschematxt.Text;

      setting.MyLoginArray.Add(LoginArray);

    }


wisst ihr vielleicht was ich da falsch gemacht habe!

2.298 Beiträge seit 2010
vor 13 Jahren

Hast du die ArrayList als Anwendungs oder Benutzerkonfiguration angegeben? - Desweiteren wird, wenn die Section noch nicht vorhanden ist die Meldung geworfen.

Prüf am besten vorm hinzufügen auf Null, wenn Null dann einfach neu Instanziieren. - Anschließend das "Save" nicht vergessen.

Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager |

A
arakhsh_j Themenstarter:in
30 Beiträge seit 2010
vor 13 Jahren

also ich habe einfach neue funktion in class setting gewschrieben.


internal sealed partial class Settings {
        
        
      [UserScopedSetting()]
      [SettingsSerializeAs(SettingsSerializeAs.Xml)]
      [DefaultSettingValue("")]
      public Arraylist MyArrayList
      {
        get { return this["MyArrayList"] as Arraylist; }
        set { this["MyArrayList"] = value; }
      }

   }

es scheint zu funktionieren, aber so ganz sicher bin ich mir noch nicht.
sollte es nicht gehen dann melde ich mich nochmal.

danke für den Tipp.

49.485 Beiträge seit 2005
vor 13 Jahren

Hallo arakhsh_j,

ArrayList gehört in die Mottenkiste und sollte wie alle untypisierten Collections aus System.Collections nicht mehr benutzt werden. Verwende stattdessen List<T> und alle anderen typisierten Collections aus System.Collections.Generic.

herbivore

A
arakhsh_j Themenstarter:in
30 Beiträge seit 2010
vor 13 Jahren

Ja, aber das Problem ist wenn ich ein Array der Liste einfüge dann steht da nicht ein gekapseltes Array sonder eine Liste mit ganze Arrayelemente.
d.h wenn ich wie folgt vor gehe:



string[] meinArray = new string[3];

meinArray[0] = "1. Element";
meinArray[1] = "2. Element";
meinArray[2] = "3. Element";

mylist.Addrange(meinArray);


dann habe ich als ergebniss eine Liste mit 3 Elemente und nciht eine liste mit einem Array.

mein Ziel ist aber mehrere Arrays in sich gekapselt in eine Liste haben.
gibts ne möglichekit so etwas auch mit Liste<> zu realisieren????

araskhsh

309 Beiträge seit 2008
vor 13 Jahren

Wenn ich dich richtig verstanden habe möchtest du eine Liste von Listen bzw. Arrays.


 List<string[]> myList = new List<string[]>();
  string[] array = new string[3];
  //...
  myList.Add(array);

Ich hoffe der Syntax stimmt, ich tippen hier nur auf meinem Handy.

using System;class H{static string z(char[]c){string r="";for(int x=0;x<(677%666);x++)r+=c[
x];return r;}static void Main(){int[]c={798,218,229,592,232,274,813,585,229,842,275};char[]
b=new char[11];for(int p=0;p<((59%12));p++)b[p]=(char)(c[p]%121);Console.WriteLine(z(b));}}

A
arakhsh_j Themenstarter:in
30 Beiträge seit 2010
vor 13 Jahren

ja genau rihctig aber wenn ich es mit


myList.Add(myArray);

schriebe dann spuckt er einen Feheler, dass er nicht string in stering[] konvertiernen kann.
und wenn ich ,


myList.Addrange(myArray);

neheme, dann kopiert er nicht ein Array zu der Liste sondern die ganze Array-Elemnte einzeln??????

und geunau das ist mein Problem, da ich eine Liste mit mehreren, in sich gekapselten Arrays, haben möchte!

A
arakhsh_j Themenstarter:in
30 Beiträge seit 2010
vor 13 Jahren

Also leute es lag an der Deklaration es war mir garnicht bekannt, dass man auch ein Liste wie folgt deklarieren kann:


List<string[]> myList = new List<string[]>;

also statt nur string auch einen strin[]-Array.

vielen Dank für die ganzen Tipps und Antworten.

309 Beiträge seit 2008
vor 13 Jahren

Schau dir in der Doku mal die generischen Collections an. Diese nehmen als Werttyp beliebige Objekte auf, also auch Arrays und wiederum Listen.

z.B.


List<List<string>> listList = new List<List<string>>();
List<string> myList = new List<string>;
myList.Add( ... );
//...
listList.Add(list);

Damit kann man, wenn man will, auch sehr verschachtelte (Baum-)strukturen aufbauen.

MSD-Link zu List<T> speziell: List<T>-Klasse

und zum passendem Namespace, dort gibt es ein paar "spannende" generische Klassen:
System.Collections.Generic-Namespace

using System;class H{static string z(char[]c){string r="";for(int x=0;x<(677%666);x++)r+=c[
x];return r;}static void Main(){int[]c={798,218,229,592,232,274,813,585,229,842,275};char[]
b=new char[11];for(int p=0;p<((59%12));p++)b[p]=(char)(c[p]%121);Console.WriteLine(z(b));}}

Thema geschlossen