我有一组类,每个类都是不同的策略,用于完成相同的工作。
namespace BigCorp.SuperApp
{
public class BaseClass { }
public class ClassA : BaseClass { }
public class ClassB : BaseClass { }
}
可配置使用哪种策略。我希望在app.config文件中仅配置类名“ClassB”,而不是完整类型名称“BigCorp.SuperApp.ClassB”。
<appConfig>
<SuperAppConfig>
<Handler name="ClassB" />
</SuperAppConfig>
</appConfig>
然而,反射调用失败,因为它们期望完整的类型名称,特别是
Type t = Type.GetType("ClassB"); // results in t == null
BaseClass c = Activator.CreateInstance(t) as BaseClass; // fails
我该如何在仅配置类名的情况下使其工作?将命名空间与类名连接起来以获取完整的类型名称?还有其他反射调用可行吗?
如果您认为这是无用的,我应该期望配置包含完整的类型名称,那么我愿意接受这个解决方案!只要提供说服我的理由即可。
(我不会从此程序集/命名空间外加载类型)