Forums Neueste Beiträge
 

Instanzen

13/03/2010 - 16:46 von Christian Mauerer | Report spam
Hallo,

ich habe ein Problem und komme hier nicht weiter.

Und zwar habe ich ein Dictionary mit vielen Objekten vom Typ Object.

Ich möchte nun diese Objekte vom Typ Object in die eigentlichen Objekttypen
konvertieren.
Also das würde so gehen:

if(obj is Namespace.ObjTest1)
{
objTest1 = (Namespace.ObjTest1) obj;
}

if(obj is Namespace.ObjTest2)
{
objTest2 = (Namespace.ObjTest2) obj;
}

if(obj is Namespace.ObjTest200)
{
objTest200 = (Namespace.ObjTest200) obj;
}

usw.

Da es bei mir aber viele verschiedene Objekte sein können,
möchte ich hier nicht für jeden möglichen Objekttyp eine IF-Anweisung haben.
Denn das müsste doch möglich sein, dass Ganze ein Mal zu programmieren.
Denn über Type kann ich doch genau ermitteln, welcher Typ es ist.

Ich hoffe, habe das einigermaßen verstàndlich geschrieben.

Vielen Dank und schöne Grüße
Christian
 

Lesen sie die antworten

#1 Frank Dzaebel
13/03/2010 - 19:53 | Warnen spam
Hallo Christian,

Und zwar habe ich ein Dictionary mit vielen Objekten vom Typ Object.
Ich möchte nun diese Objekte vom Typ Object in die eigentlichen
Objekttypen konvertieren.



Kann man gut mit Unity machen:

[Unity Application Block 1.1 - May 2008]
http://msdn.microsoft.com/en-us/lib...68366.aspx
(Unit 2.0 [und EL 5.0] kommt am 14. April diesen Jahres)
________________

Ansonsten vielleicht etwas wie:

private void Form1_Load(object sender, EventArgs e)
{ // Demo - Daten einfüllen:
Dictionary<string, object> dic = new Dictionary<string, object>();
dic.Add("fünf", new Objekte.ObjTest3());
dic.Add("drei", new Objekte.ObjTest1());
dic.Add("eins", 1); dic.Add("zwei", 2d);
dic.Add("vier", new Objekte.ObjTest2());

Objekte objekte = new Objekte();
objekte.SetVariables(dic); // Hier Werte setzen
MessageBox.Show(objekte.Obj1 == null ? "NULL" : "Gesetzt");
}

class Objekte
{
public class ObjTest1 { } public ObjTest1 Obj1;
public class ObjTest2 { } public ObjTest2 Obj2;
public class ObjTest3 { } public ObjTest3 Obj3;

public void SetVariables(Dictionary<string, object> dic)
{
foreach (string key in dic.Keys)
{
object val = dic[key];
foreach (FieldInfo fi in this.GetType().GetFields())
if (fi.FieldType == val.GetType()) fi.SetValue(this, val);
}
}
}


ciao Frank
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Ähnliche fragen