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