我有一个名为“Gcim.Management.Module.dll”的程序集(除了我正在运行的程序集之外),我需要实例化一个特定的类:
Assembly myAssembly = Assembly.LoadFile(@"C:\Projects\Gcim.Management\Gcim.Management.Module\bin\Debug\Gcim.Management.Module.dll");
我感兴趣的课程名称为“DataSources”。 我正在尝试迭代这个程序集并匹配我正在寻找的名称:
var types = myAssembly.ManifestModule.GetTypes();
foreach (var item in types)
{
if(item.Name == "DataSources")
{
Type myType = Type.GetType(item.FullName);
object targetObject = ObjectSpace.CreateObject(myType);
}
}
"ObjectSpace.CreateObject"
来自第三方库,要使其正常工作,它需要有效的myType
。
我在迭代时得到一个匹配,但在myType
Type myType = Type.GetType(item.FullName);
仍然为空
获取程序集类型的正确方法是什么,所以我可以实例化该类型的对象?
答案 0 :(得分:2)
如果item.Name=="DataSources"
返回true
,那么item就是您想要的类型...不需要调用Type.GetType来获取它。
但是,要回答您的问题,Type.GetType(字符串名称)将仅在当前程序集或“核心”程序集(mscorlib)中按全名返回类型。您可以使用程序集限定名称...
Type.GetType( item.AssemblyQualifiedName )
然后会找到类型。