2012-09-17 50 views
0

请帮我解决这个错误:不能类型的对象隐式转换为System.Reflection.Assembly

Cannot implicitly convert type 'object' to 'System.Reflection.Assembly'. An explicit conversion exists (are you missing a cast?)

谢谢!

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 
+0

尝试更正圆括号匹配typeof(System.Windows.Controls.UserControl).Name)您缺少开头paranthesis EX:typeof((System.Windows.Controls.UserControl).Name) – Freeman

+0

@Freeman不,圆括号是正确的。第一个右括号属于'typeof',第二个是'CreateInstanceAndUnwrap'的右括号。 – hvd

+0

我不明白你想要做什么。你似乎是在一个新的域中创建一个'UserControl',然后将它存储在'Assembly'类型的变量中。这对我来说没有意义。编辑:除此之外,你没有传递包含'UserControl'类型的程序集的程序集名称,所以它不会起作用。 – hvd

回答

3

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

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

尝试用FullName属性:

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

编辑:

也可以尝试assemblyName.FullName

根据msdn都应该是全名。

+0

抱歉,它不起作用。 –

+0

检查@aktion的答案! – Vale

0
public Object CreateInstanceAndUnwrap(
    string assemblyName, 
    string typeName) 

它返回一个对象,你需要一个大会,请重新检查。

+0

“,你需要一个类型” - 嗯? 'testLibrary'被声明为具有'Assembly'类型。 – hvd

+0

谢谢,更正 – Freeman

相关问题