仅在不知道我要激活的类型的名称空间的情况下激活类型
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);
我尝试了各种方法,但遇到了障碍。好像我必须知道类型的命名空间。这是真的?还是我遗漏了什么。
回顾一下,我有两件事...
- 类型的名称,即MyClass
- 正在执行的程序集
您可以列出当前应用程序域或正在执行的程序集中的所有类型,然后执行 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);
然后您可以决定是否找到一种类型,如果有多种,则使用哪一种。
我不确定这是否可行,而且这个问题的现有答案似乎暗示您需要知道命名空间。
我正在尝试激活一个类型,但希望避免指定该类型的命名空间。这可能吗?我当然会提前知道大会。
string qualifiedName = Assembly.GetAssembly(typeof(MyType)).FullName;
Type toActivate = Type.GetType("sometype, " + qulifiedName);
我尝试了各种方法,但遇到了障碍。好像我必须知道类型的命名空间。这是真的?还是我遗漏了什么。
回顾一下,我有两件事...
- 类型的名称,即MyClass
- 正在执行的程序集
您可以列出当前应用程序域或正在执行的程序集中的所有类型,然后执行 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);
然后您可以决定是否找到一种类型,如果有多种,则使用哪一种。