【发布时间】:2012-03-27 00:07:48
【问题描述】:
我有一个包含两个项目的解决方案。 首先让我描述一下我的场景。 项目1:持有一个基类调用MyBaseClass 具有以下两个我感兴趣的属性和方法:
TypeToLoad - 使用简单的 get/set 功能实例化哪个继承类的静态字符串属性。
Instance - 静态属性,它返回 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,而不必将这两个类放在同一个项目中(基础 DLL 类库中的 MyBaseClass 和 MyInheritClass在另一个引用 MyBaseclass DLL 库的项目中)?
我已尝试搜索反射,Activator,但无法找到我要查找的内容。也许我不知道正确的术语。
【问题讨论】:
标签: c# .net inheritance reflection activator