Property Liste?



  • Hallo, ich möchte mich auf dieses Beispiel beziehen:
    http://www.switchonthecode.com/tutorials/csharp-tutorial-binding-a-datagridview-to-a-collection
    Dort sind die Variablen und die zugehörigen Properties Make, Model, Year einzeln in der Klasse definiert.
    Kann man so etwas irgendwie zusammenfassen, in eine Art Variable-Property-Liste oder so?
    Das man also nicht die Variablen und die Properties einzeln stehen hat, sondern
    irgendwie als Liste?

    Also im Prinzip irgendwie so:

    MyList varname_value_pairs<string, int> = { {"Eins", 1}, {"Zwei", 2}, ...
    
    public MyList VarnameValuePair
     {
        get { return VarnameValuePair.Value; }
        set
        {
          this.varname_value_pairs[VarnameValuePair.Varname] = value;
          this.NotifyPropertyChangedVarnameValuePair.Varname);
        }
      }
    

    Für eine zur Kompilierzeit unbekannten Anzahl Variablen/Properties.
    Geht das iwie?

    mfg
    🙂



  • Nicht das ich wüsste. Da du ja immer nur einen Key haben kannst gibts dafür ja das Dictionary. Aber dort kannst du pro Schlüssel nur 1 Wert speichern. Aber dieser kann wieder ein Objekt irgendeiner Klasse sein (Damit wieder N members).
    Manchmal hab ich mir auch Hilfsklassen Tuple (gibts eigentlich schon als KeyValuePair), Triple, Quadruple ... gebaut:

    public class Tuple<T1,T2>
    {
       public Tuple(T1 first, T2 second)
       {
          First = first;
          Second = second;
       }
       public T1 First;
       public T2 Second;
    }
    

    Spätestens ab Quadruple wirds dann aber unübersichtlich und ich würde wieder eher zu einer Strukt raten. Denn man weiss dan wieder nicht mehr was First, Second, Third .... eigentlich ist.



  • @kuckuck+: Was willst du denn erreichen?



  • Fedaykin schrieb:

    Manchmal hab ich mir auch Hilfsklassen Tuple (gibts eigentlich schon als KeyValuePair), Triple, Quadruple ... gebaut:

    http://msdn.microsoft.com/en-us/library/system.tuple.aspx



  • Besten Dank für den Link. Interessant zu wissen das es sowas gibt. Leider erst ab Version 4. 😞



  • Firefighter schrieb:

    @kuckuck+: Was willst du denn erreichen?

    eine klasse bauen, die dynamisch properties erzeugt und die daten mit nem datagridview verbindet.
    die properties also erst zur laufzeit erzeugen und nicht zur compilezeit festlegen.
    die klasse soll dann das gleiche können wie die klasse Car auf der verlinkten seite.



  • Vielleicht hilft dir ein Anonymer Datentyp den du zur Laufzeit erzeugst, alles andere geht nur über dynamische Code-Erzeugung und ich glaube kaum das du das willst 😃



  • Na dann lasse ich das wohl mal bleiben!
    😃



  • Fedaykin schrieb:

    Besten Dank für den Link. Interessant zu wissen das es sowas gibt. Leider erst ab Version 4. 😞

    Kann man aber ohne Problemen selber implementieren
    (oder vielleicht gibt es das schon bei mono)

    kuckuck+ schrieb:

    Firefighter schrieb:

    @kuckuck+: Was willst du denn erreichen?

    eine klasse bauen, die dynamisch properties erzeugt und die daten mit nem datagridview verbindet.
    die properties also erst zur laufzeit erzeugen und nicht zur compilezeit festlegen.
    die klasse soll dann das gleiche können wie die klasse Car auf der verlinkten seite.

    Ich bin jetzt kein Profi mit dem Datagridview, wenn es aber so ähnlich wie ein Propertygrid wirken kann (d.h. System.ComponentModel.TypeDesriptor befragt), gäbe es da noch einen alternativen Weg. Der ist zwar nicht einfach, aber sehr flexibel.



  • Rhombicosidodecahedron schrieb:

    Fedaykin schrieb:

    Besten Dank für den Link. Interessant zu wissen das es sowas gibt. Leider erst ab Version 4. 😞

    Kann man aber ohne Problemen selber implementieren
    (oder vielleicht gibt es das schon bei mono)

    Da wäre ich echt an einen Ansatz interessiert. Wie man sowas am besten machen würde.



  • Also ich würde ja fast behaupten das du ein Fehler im Design hast wenn du zur Laufzeit Properties erstellen willst, ich kenne dein Szenario zwar nicht, aber das deutet immer auf irgendwas unschönes hin. Vielleicht kannst du uns erklären auf was du abzielst.



  • Fedaykin schrieb:

    Rhombicosidodecahedron schrieb:

    Fedaykin schrieb:

    Besten Dank für den Link. Interessant zu wissen das es sowas gibt. Leider erst ab Version 4. 😞

    Kann man aber ohne Problemen selber implementieren
    (oder vielleicht gibt es das schon bei mono)

    Da wäre ich echt an einen Ansatz interessiert. Wie man sowas am besten machen würde.

    Siehe LinqBridge (Linq - ohne Linq.Expressions - für VS08+)
    http://linqbridge.googlecode.com/files/LinqBridge-1.1.cs

    Nimm den redgate Reflector (a.k.a .Net Reflector)
    http://www.red-gate.com/products/reflector/

    Siehe Mono:
    http://ftp.novell.com/pub/mono/sources-stable/
    "Pfad": mono-2.6.7.tar.bz2\mono-2.6.7.tar\mono-2.6.7\mcs\class\corlib\System\Tuples.cs


Anmelden zum Antworten