Ich habe eine Lösung, die zwei Projekte enthält. Zunächst möchte ich mein Szenario beschreiben. Projekt 1: hält eine Basisklasse ruft MyBaseClass mit den beiden folgenden Eigenschaften und Methoden, die ich interessiert bin:Activator.CreateInstance mit geerbter Klasse nicht im selben Projekt
TypeToLoad - statische String-Eigenschaft, welche Klasse mit einfachen get/set-Funktionalität zu instanziiert geerbt.
Instanz - statische Eigenschaft, die eine MyBaseClass Instanz des Typs in TypeToLoad mit den folgenden Zeilen Code angegeben zurückgibt:
im zweiten Projektpublic static MyBaseClass Instance{
return (MyBaseClass)Activator.CreateInstance(Type.typeof(TypeToLoad));
}
jetzt natürlich richtige Namespace und Referenzen, die ich erben MyBaseClass wie folgt (von wurde hinzugefügt).
public class MyInheritClass : MyBaseClass {
//implements all other functions of MyBaseClass;
}
und einer meiner anderen Code-Datei im selben Projekt wie MyInheritClass, habe ich folgende Zeilen Code:
Type myType = Type.typeof("MyInheritClass"); //returns the correct "Type"
MyBaseClass.TypeToLoad = "MyInheritClass";
MyBaseClass myInstance = MyBaseClass.Instance; //Errors... because Type.typeof(...) could not resolve "MyInheritClass".
Wenn ich MyInheritClass Code-Datei in das gleiche Projekt wie MyBaseClass bewegen die Code läuft gut.
Meine Frage ist, gibt es sowieso zu erstellen und Instanz von MyInheritClass mit MyBaseClass.Instance MyBaseClass.TypeToLoad = "MyInheritClass" ohne diese beiden Klassen im selben Projekt (MyBaseClass in der Basis-DLL-Klassenbibliothek und MyInheritClass in einem anderen Projekt, das auf MyBaseclass-DLL-Bibliothek verweist)?
Ich habe versucht, nach Reflexionen zu suchen, Activator war aber nicht in der Lage zu finden, was ich suchte. Vielleicht kenne ich die richtige Terminologie dafür nicht.
BTW, sollten Sie wirklich beschreibende Tags wie [tag: .net] oder [tag: C#] verwenden.Wenn Sie das tun würden, würden Sie wahrscheinlich viel früher eine Antwort bekommen. – svick