110,535
社区成员
发帖
与我相关
我的任务
分享
namespace myplug
{
public class myrootfrm: UserControl
{
public myrootfrm()
{
}
// 做为虚接口,由子类进行实现
public virtual void showinfo( string infos )
{
}
}
}
namespace myplug
{
public partial class mymainfrm: myrootfrm
{
public mymainfrm()
{
InitializeComponent();
}
public void showinfo( string infos )
{
// 处理要显示的内容
}
}
}
...
using myplug;
namespace mainprograms
{
public parial class Form1: Form
{
...
private myrootfrm plugfrm;
public Form1()
{
InitializeComponent();
LoadPlugs();
}
// 这里例子先只加载一个控件,而且控件的名称也是固定的
private LoadPlugs()
{
string strPath = Application.StartupPath + "\\myplug1.dll";
System.Reflection.Assembly ass = System.Reflection.Assembly.LoadFile(strPath);
Type[] ts = ass.GetExportedTypes();
object ojb = ass.CreateInstance(ts[1].FullName); // 这一句是成功的。这个例子中,ts[1]就是自定义控件的主窗口类mymainfrm
// 上一句虽然成功,但无法调用控件中的函数showinfo(),所以要把它转换成实际类型的实例
plugfrm = (myrootfrm)obj; // 这一行转换失败
}
}
}