我需要做类似的事情:
Type CustomType = Type.GetType("instanceName");
它总是返回null。 instanceName是一个字符串,表示添加到References的DLL中包含的类型(copyLocal属性设置为false)。
我也尝试过:
Type CustomType = Type.GetType("instanceName, dllFile.dll");
但也返回null。
非常感谢
亚历
答案 0 :(得分:4)
如果已加载程序集,您可以尝试:
Type customType = Type.GetType("namespace.typename, assembly");
答案 1 :(得分:3)
如果您没有将程序集部署到GAC并且CopyLocal
设置设置为false
,那么您打算从哪里加载程序集?
如果您计划将程序集部署到驱动器上的固定位置,则可以使用Assembly.LoadFrom
:
var assembly = Assembly.LoadFrom(@"C:\Path\To\Assembly.dll");
var type = assembly.GetType("InstanceName");
这允许您加载绝对装配。如果您使用Type.GetType
,它会使用标准融合程序集加载规则来尝试查找匹配的程序集(但如果它不是GAC或CopyLocal
= true
),那么它将不会与您的输出一起部署,GetType
将返回null。
另外,如果您未在类型名称中指定程序集名称,例如instanceName, assemblyName
,而不是instanceName
,我相信只检查当前正在执行的程序集。