Späte Bindung in C#

Hallo!

Ich hab vergebens in diversen Büchern und Foren nach einer Lösung zu dem folgenden kleinen Problem gesucht.

Ich möchte ein Objekt einer, zur Kompilierzeit noch nicht feststehenden Klasse instanzieren. Der Klassenbezeichner ist in einem String abgebildet.

Mein erster Versuch sieht ungefähr so aus:

string strClassName =„MyClass“; /*wird natürlich dynamisch gefüllt*/
MyObject objNewObject;

Type myType = Type.GetType (strClassName);
try
{
objNewObject= (DataRowBuilder) Activator.CreateInstance(
Type.GetType(strClassName),
objAttributes);
}
catch
{…}


Im objAttributes ist nur der Konstruktor übergeben…

Ich erhalte von der GetType Methode immer „null“!

Nun, ich denke das Problem ist wirklich einfach… wahrscheinlich ist mein Lösungsansatz in diesem Fall völlig verkehrt.

Für Anregungen bin ich dankbar
Patrick

Hallo

Nein du bist auf dem richtigen weg, du musst nur bei GetType
auch noch die namespaces --> „mynamspace.myclass“ mitgeben, dann sollte es gehen (bei mir wenigstens gehts)

gruss

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hi Guiseppe !

Es ginge auch über Reflection !

LG
Mario

ja danke, jetzt funktioniert.

nochwas:
ich bekomme von der CreateInstance methode immer eine MissingMethodException die angibt das der Konstruktor nicht gefunden wurde.

mein Array sieht folgendermaßen aus:

object [] objAttributes = {line, objMyObject};

der Konstruktor (der einzige) so:

internal MyClass(string line, MyObject object)

vielleicht kannst du mir ja wieder einen tipp geben

lg
patrick

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

hallo

versuch mal das… bei mir gehts:

private void button1_Click(object sender, System.EventArgs e)
{
Type t = Type.GetType(„WindowsApplication3.myClass“);
object[] p = {„hallo“, new DataSet()};
object o = Activator.CreateInstance(t,p);
}

internal class myClass
{
public myClass(string line, object o)
{
MessageBox.Show(line);
MessageBox.Show(o.ToString());
}
}

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]