Assembly.Load...?!

07/03/2009 - 15:17 von Carsten Posingies | Report spam
Hallo zusammen,

mal wieder ne Grundlagenfrage. Ich bekomme einen Typennamen als String
geliefert (aus einer Konfigurationsdatei) und dazu den Datei(!)-Namen
der Assembly, die diesen Typ enthàlt. Nun muss ich von diesem Typen eine
Instanz erzeugen. Beispiel:

(Datei SomeAssembly.dll, Pfad bekannt)
namespace MySpace
{
public class MyClass : IMyClass { ... }
}


(Klasse MyWeirdFactory)

public object CreateInstanceOf(string typeName, string assemblyPath) {
... }


Das ist schon ein wenig vereinfacht, da es noch einen
Type->Factory-Mapper gibt, aber es bleibt dabei, dass von der Assembly,
in der der Typ sitzt, nur der Dateiname und nicht der FullName bekannt
sind. Laut Anforderung kann ich davon ausgehen, dass ich keine
Versionierung beachten muss.

Sieht also dann so aus:

IMyClass instance = CreateInstanceOf("MySpace.MyClass",
"SomeAssembly.dll");

SomeAssembly.dll liegt im selben Vz. wie der Rest.

Wie macht man das?

Carsten
 

Lesen sie die antworten

#1 Carsten Posingies
07/03/2009 - 15:22 | Warnen spam
"Carsten Posingies" schrieb im Newsbeitrag
news:uF3N$
Hallo zusammen,

mal wieder ne Grundlagenfrage. Ich bekomme einen Typennamen als String
geliefert (aus einer Konfigurationsdatei) und dazu den Datei(!)-Namen
der Assembly, die diesen Typ enthàlt. Nun muss ich von diesem Typen
eine Instanz erzeugen. Beispiel:

(Datei SomeAssembly.dll, Pfad bekannt)
namespace MySpace
{
public class MyClass : IMyClass { ... }
}


(Klasse MyWeirdFactory)

public object CreateInstanceOf(string typeName, string assemblyPath)
{ ... }


Das ist schon ein wenig vereinfacht, da es noch einen
Type->Factory-Mapper gibt, aber es bleibt dabei, dass von der
Assembly, in der der Typ sitzt, nur der Dateiname und nicht der
FullName bekannt sind. Laut Anforderung kann ich davon ausgehen, dass
ich keine Versionierung beachten muss.

Sieht also dann so aus:

IMyClass instance = CreateInstanceOf("MySpace.MyClass",
"SomeAssembly.dll");

SomeAssembly.dll liegt im selben Vz. wie der Rest.

Wie macht man das?

Carsten

Ähnliche fragen