Laden...

Zugriff auf unbekanntes Objekt

Erstellt von padde77 vor 8 Jahren Letzter Beitrag vor 8 Jahren 1.798 Views
P
padde77 Themenstarter:in
50 Beiträge seit 2011
vor 8 Jahren
Zugriff auf unbekanntes Objekt

Hi,

ich speichere in einem Dictionary<int, object> myDic ... mein Objekt ab.
Da das Objekt jedoch immer ein anderes sein kann, und ich mit dem Key auslesen möchte, welches Objekt dies ist, und vor allem auf seine Daten zugreifen möchte, frage ich hier einmal, wie?

var myObject = myDic[2].GetType();

nur wie greife ich auf den Inhalt des Objektes zu?

Danke
padde

W
955 Beiträge seit 2010
vor 8 Jahren

Hi,

Du könntest Dictionary<int, dynamic> verwenden. Sowas bracht man eher selten. Wenn du uns sagst wozu du es brauchst können wir vllt bessere Alternativen nennen.

16.834 Beiträge seit 2008
vor 8 Jahren

Dictionary<String,<KeyValurPair<Type,object>> wäre möglich - trotzdem ist .NET eine streng typisierte Sprache und das Vorgehen hört sich nicht gut durchdacht an.
Erzähl, was Du vor hast - da gibt es mit Sicherheit eine bessere Lösung.

P
padde77 Themenstarter:in
50 Beiträge seit 2011
vor 8 Jahren

OK,

ich hab ne Anwendung, welche Tabs (TabControl) implementiert, sagen wir Tab1, 2 und 3
Auf 1 liegt Person, 2 Auto, 3 Mechaniker
wenn ich jetzt Tab 2 schliesse, wandert 3 nach 2, aber ich benötige im Tab 2 alle Infos, welche in Tab 3 waren.
Übrigens, die Tabs mappen wiederum Subforms, welche wissen müssen, welches Onjekt denen zugeordnet ist.
und wenn ich jetzt zwischen den Tabs wechsele, muss ich beim Aufruf von z.B. Tab 2 wissen, welches Objekt (Mechaniker) dran hängt und auf diesen Mechaniker zugreifen können.

Hoffe, ihr habt mein Geschreibsel verstanden.

LG
padde

W
955 Beiträge seit 2010
vor 8 Jahren

Kannst Du nicht drei Modellklassen machen und dort diese Beziehungen abbilden?
z.B. (geraten)


public class Person
{
}

public class Mechaniker
{
}

public class Auto
{

  public Person Besitzer { get; set; }
  public Mechaniker Mechaniker { get; set; }
}

Dann könnte man den Besitzer im ersten Reiter, das Auto im zweiten und den Mechaniker im dritten bearbeiten.

P
padde77 Themenstarter:in
50 Beiträge seit 2011
vor 8 Jahren

Hi,

das Auto kann auch erst im 3. Tab aufgerufen werden. Der Mechaniker im 1. ....
Daher

T
2.224 Beiträge seit 2008
vor 8 Jahren

Klingt so als wäre hier eine Container Klasse am besten.

Beispiel:


public class Person
{
}

public class Mechaniker
{
}

public class Auto
{
}

class TabData
{
  // Die für den Tab benötigten Eigenschaft ist dann nicht null!
  public Person Besitzer { get; set; }
  public Mechaniker Mechaniker { get; set; }
  public Auto Auto { get; set; }
}

class Tab
{
  public TabData Data { get; set; }
}

Tab tab1 = new Tab();
tab1.Content.Besitzer = new Person();
// Hier Tab1 befüllen

Tab tab2 = new Tab();
tab2.Content.Mechaniker = new Mechaniker();
// Hier Tab2 befüllen
///... usw.

Somit hast du einen typisierten Container.
Du musst dann nur in deinem jeweiligen Tab ein TabData Objekt anlegen und füllen.
Das TabData Objekt hat dann jeweils eine Eigenschaft != null wo deine Informationen drin sind.

Du kannst dann auch deine Tabs weiter ausbauen und einfach durch die Referenzen zuweisen, entfernen etc.
Sollte doch passen oder?

Ansonsten bitte mehr Code damit wir dir ggf. besser helfen können 😃

T-Virus

Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.