我不确定这是否可行,这个问题的现有答案似乎暗示您需要知道命名空间。
我正在尝试激活一个类型,但更愿意避免指定Type的命名空间。这可能吗?当然,我会提前知道大会。
string qualifiedName = Assembly.GetAssembly(typeof(MyType)).FullName;
Type toActivate = Type.GetType("sometype, " + qulifiedName);
我尝试了各种方法,但是遇到了路障。好像我必须知道该类型的命名空间。这是真的?或者我错过了什么。
总结一下,我有两件事......
答案 0 :(得分:2)
您可以列出当前应用程序域中的所有类型或执行程序集,并执行Where
以获取您要查找的类型。
var types = AppDomain.CurrentDomain.GetAssemblies().SelectMany(t => t.GetTypes())
或者
var types = Assembly.GetAssembly(typeof(MyType)).GetTypes()
其次是:
var myType = types.Where(t => t.Name == nameToFind);
然后,您可以决定是否找到某个类型,或者是否为多个,使用哪一个类型。