以前我是这么调用的,调用的都是我包含在项目里面的cs文件,这些文件都是UserControl,是cs但是没有编译成dll.这样调用没问题.
string str="water.sysmanage.datasave";
Type t = Type.GetType(str);
UserControl control=(UserControl)Assembly.GetExecutingAssembly().CreateInstance(str);
if(control!=null)
this.panelfill.Controls.Add(control);后来想分开做功能,其他组员给我UserControl编译好的dll但是调用不成功以下是调用代码,请高手分析下.就是想把这个dll进行实例化然后填充到panel里面 //读取选择指定的dll文件
string strPath = @"D:\DDLinfo\bin\Debug\datasave.dll";
string NameSpace = "water.sysmanage.datasave";
//加载指定的程序集之内存中
Assembly assembly = Assembly.LoadFrom(strPath);
//返加程序集中的一个指定的对象,哪果是返回所有对象,则用GetTypes()返回一个Typt对象的数组.
Type T = assembly.GetType(NameSpace);
//根据前面type类型创建一个对象 *******************下面这行报错.调用发生异常
UserControl control = (UserControl)Activator.CreateInstance(T); if (c != null)
this.panelfill.Controls.Add(control);
我就是想把个 UserControl的dll fill到panel里面 大家多指点
string str="water.sysmanage.datasave";
Type t = Type.GetType(str);
UserControl control=(UserControl)Assembly.GetExecutingAssembly().CreateInstance(str);
if(control!=null)
this.panelfill.Controls.Add(control);后来想分开做功能,其他组员给我UserControl编译好的dll但是调用不成功以下是调用代码,请高手分析下.就是想把这个dll进行实例化然后填充到panel里面 //读取选择指定的dll文件
string strPath = @"D:\DDLinfo\bin\Debug\datasave.dll";
string NameSpace = "water.sysmanage.datasave";
//加载指定的程序集之内存中
Assembly assembly = Assembly.LoadFrom(strPath);
//返加程序集中的一个指定的对象,哪果是返回所有对象,则用GetTypes()返回一个Typt对象的数组.
Type T = assembly.GetType(NameSpace);
//根据前面type类型创建一个对象 *******************下面这行报错.调用发生异常
UserControl control = (UserControl)Activator.CreateInstance(T); if (c != null)
this.panelfill.Controls.Add(control);
我就是想把个 UserControl的dll fill到panel里面 大家多指点
这样试试。
Activator.CreateInstance(T)这个方法只能用于本程序集中有的类型,如果这个程序集中没有的类型是不能这样创建的。 assembly.CreateInstance(namespace)