我有一个包含两个项目的解决方案。 首先让我描述一下我的场景。 项目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