我有一個包含兩個項目的解決方案。 首先讓我描述一下我的場景。 項目1:擁有一個基類調用MyBaseClass 以下兩個屬性和方法,我很感興趣:Activator.CreateInstance與繼承類不在同一個項目中
TypeToLoad - 靜態字符串屬性,它的繼承類簡單的get/set功能來實例化。
實例 - 靜態屬性,它返回TypeToLoad與下面的代碼行中指定的類型的MyBaseClass實例:
public static MyBaseClass Instance{
return (MyBaseClass)Activator.CreateInstance(Type.typeof(TypeToLoad));
}
現在在第二個項目我繼承MyBaseClass如下(當然,正確的命名空間和引用已被添加)。
public class MyInheritClass : MyBaseClass {
//implements all other functions of MyBaseClass;
}
和我的其他代碼文件中的一個,在同一個項目的MyInheritClass,我有以下幾行代碼:
Type myType = Type.typeof("MyInheritClass"); //returns the correct "Type"
MyBaseClass.TypeToLoad = "MyInheritClass";
MyBaseClass myInstance = MyBaseClass.Instance; //Errors... because Type.typeof(...) could not resolve "MyInheritClass".
當我移動MyInheritClass代碼文件到同一項目作爲MyBaseClass的代碼運行得很好。
我的問題是,是否有無論如何通過設置MyBaseClass.TypeToLoad =「MyInheritClass」使用MyBaseClass.Instance創建MyInheritClass的實例,而無需在同一個項目中使用這兩個類(MyBaseClass在基本DLL類庫中,並且另一個項目中的MyInheritClass引用MyBaseclass DLL庫)?
我試圖尋找反射激活劑,但無法找到我正在尋找的東西。也許我不知道這個正確的術語。
順便說一句,你應該使用像[tag:.net]或[tag:c#]這樣的描述性標籤。如果你這樣做,你很可能會很快得到答案。 – svick 2012-03-27 01:17:00