仅在不知道我要激活的类型的名称空间的情况下激活类型

Activate type only without knowing the namespace of the type I am trying to activate

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

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

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

我尝试了各种方法,但遇到了障碍。好像我必须知道类型的命名空间。这是真的?还是我遗漏了什么。

回顾一下,我有两件事...

  1. 类型的名称,即MyClass
  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);

然后您可以决定是否找到一种类型,如果有多种,则使用哪一种。