仅在不知道我尝试激活的类型的命名空间的情况下激活类型

时间:2015-05-04 15:02:36

标签: c# reflection gettype

我不确定这是否可行,这个问题的现有答案似乎暗示您需要知道命名空间。

我正在尝试激活一个类型,但更愿意避免指定Type的命名空间。这可能吗?当然,我会提前知道大会。

string qualifiedName = Assembly.GetAssembly(typeof(MyType)).FullName;
Type toActivate = Type.GetType("sometype, " + qulifiedName);

我尝试了各种方法,但是遇到了路障。好像我必须知道该类型的命名空间。这是真的?或者我错过了什么。

总结一下,我有两件事......

  1. 类型的名称,即MyClass
  2. 正在执行的assembl

1 个答案:

答案 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);

然后,您可以决定是否找到某个类型,或者是否为多个,使用哪一个类型。