我动态加载了一个dll~~
代码如下var dllUri = new Uri( Environment.CurrentDirectory + @"\dll\WpfControlLibrary1.dll" );
var uri = dllUri.ToString( );
Assembly assembly=Assembly.LoadFrom( uri );
string NameSpaceStr=assembly.GetTypes( )[1].ToString( );//获取DLL命名空间
try
{
Object obj=assembly.CreateInstance( NameSpaceStr , true );//创建对象
frm=obj as UserControl;
grid.Children.Add(frm);
.......
}
catch(...)
{...}但是个别dll在assembly.CreateInstance这一步时发生错误~~~错误提示 "无法将类型为WpfControl.UserControl1的对象强制转换为类型System.Windows.window"这个是什么错误啊~??应该样解决呢~~
代码如下var dllUri = new Uri( Environment.CurrentDirectory + @"\dll\WpfControlLibrary1.dll" );
var uri = dllUri.ToString( );
Assembly assembly=Assembly.LoadFrom( uri );
string NameSpaceStr=assembly.GetTypes( )[1].ToString( );//获取DLL命名空间
try
{
Object obj=assembly.CreateInstance( NameSpaceStr , true );//创建对象
frm=obj as UserControl;
grid.Children.Add(frm);
.......
}
catch(...)
{...}但是个别dll在assembly.CreateInstance这一步时发生错误~~~错误提示 "无法将类型为WpfControl.UserControl1的对象强制转换为类型System.Windows.window"这个是什么错误啊~??应该样解决呢~~
也就是说,你实际.CreateInstance返回的对象不是这个类型或它的子类, 你动态创建的那个类应该继承自System.Windows.window这个类,就没有这个问题了
CreateInstance方法的参数时string类型的,传进去的是控件名称,应该是在他的内部转换的~~返回值是Object类型的~~
试下直接引用dll再创建对象会不会有这问题?
嗯,嗯,是啊~~assembly.CreateInstance的基础应该是一个System.Windows.window类型的,这个应该怎么解决啊~~