Later binding

22/03/2008 - 23:53 von Ingo Manthey | Report spam
Hallo NG,

leider habe ich da wohl immer noch meine Schwierigkeiten.
Ich habe ein Assembly in diesem habe ich eine class Extern

public class Extern
{
public Extern()
{
}

public void UpdateSchema()
{
}
}

In dem aufrufenden Assembly:
AssemblyName asmName = new AssemblyName(name);
asmName.Version = new Version(vers);
asmName.CultureInfo = CultureInfo.InvariantCulture;
HexConvert hexConvert = new HexConvert();
asmName.SetPublicKeyToken(hexConvert.ToByteArray("ee66f6602aa2f5bb"));
asm = Assembly.Load(asmName);

Klappt auch der assembly wird geladen.

foreach (Type type in asm.GetExportedTypes())
{
if (type.ToString() == name + ".Extern")
{
dbInterfaceType = type;
break;
}
}

Hier klappt es auch, der type meiner Klasse wird im assembly gefunden und
gesetzt.

Nun möchte ich die Methode UpdateSchema() ausführen.
Ich erstelle zuerst eine instance meiner class.

object obj = Activator.CreateInstance(dbInterfaceType);
MethodInfo mi = dbInterfaceType.GetMethod("UpdateSchema",
BindingFlags.Public);

Leider ist mi null. Warum was ich falsch.

Danke für jeden Hinweis und Tipp.


Grüße Ingo
 

Lesen sie die antworten

#1 Herfried K. Wagner [MVP]
23/03/2008 - 00:49 | Warnen spam
"Ingo Manthey" schrieb:
leider habe ich da wohl immer noch meine Schwierigkeiten.
Ich habe ein Assembly in diesem habe ich eine class Extern

public class Extern
{
public Extern()
{
}

public void UpdateSchema()
{
}
}

In dem aufrufenden Assembly:
AssemblyName asmName = new AssemblyName(name);
asmName.Version = new Version(vers);
asmName.CultureInfo = CultureInfo.InvariantCulture;
HexConvert hexConvert = new HexConvert();
asmName.SetPublicKeyToken(hexConvert.ToByteArray("ee66f6602aa2f5bb"));
asm = Assembly.Load(asmName);

Klappt auch der assembly wird geladen.

foreach (Type type in asm.GetExportedTypes())
{
if (type.ToString() == name + ".Extern")
{
dbInterfaceType = type;
break;
}
}

Hier klappt es auch, der type meiner Klasse wird im assembly gefunden und
gesetzt.

Nun möchte ich die Methode UpdateSchema() ausführen.
Ich erstelle zuerst eine instance meiner class.

object obj = Activator.CreateInstance(dbInterfaceType);
MethodInfo mi = dbInterfaceType.GetMethod("UpdateSchema",
BindingFlags.Public);



=> 'BindingFlags.Instance | BindingFlags.Public'.

M S Herfried K. Wagner
M V P <URL:http://dotnet.mvps.org/>
V B <URL:http://dotnet.mvps.org/dotnet/faqs/>

Ähnliche fragen