无法将类型对象隐式转换为System.Reflection.Assembly

时间:2012-09-17 13:50:27

标签: c# .net reflection

请帮我解决此错误:

  

无法将类型'object'隐式转换为'System.Reflection.Assembly'。存在显式转换(您是否错过了演员?)

谢谢!!!

CODE

var assemblyName = AssemblyName.GetAssemblyName(assemblyPath);

var ads = new AppDomainSetup
               {
                  ApplicationBase = AppDomain.CurrentDomain.SetupInformation.ApplicationBase, 
                  DisallowCodeDownload = true 
               };

AppDomain newDomainName = AppDomain.CreateDomain("newDomainName", null, ads);

Assembly testLibrary = newDomainName.CreateInstanceAndUnwrap(assemblyName.Name,
                      typeof(System.Windows.Controls.UserControl).Name);  // Here the error occures

3 个答案:

答案 0 :(得分:3)

CreateInstanceAndUnwrap返回已创建类型的实例(上面代码中为System.Windows.Controls.UserControl),而不是Assembly。代码应该是:

UserControl userControl = (UserControl) newDomainName.CreateInstanceAndUnwrap(
    assemblyName.Name, typeof(System.Windows.Controls.UserControl).Name);

答案 1 :(得分:0)

尝试使用FullName属性:

typeof(System.Windows.Controls.UserControl).FullName

编辑:

也可以尝试assemblyName.FullName

根据msdn,两者都应该是全名。

答案 2 :(得分:0)

public Object CreateInstanceAndUnwrap(
    string assemblyName,
    string typeName)

它返回一个对象,你需要一个程序集,请重新检查。