如何去动态加载一些主程序框架并不知道(没有引用)的组件呢?以下给出几个方法并作相关讨论。
一、使用Assembly.Load。
范例代码:下载
我们先准备一些接口(interface),主程序会不断的在他认为需要的时候调用这些接口。并有可能某些接口的调用还依赖于其他接口。但主程序并不关心这些接口谁来实现。好了,我们先创建一个类库(我命名他为DomainBase)来保存这些接口。以下是我们定义的第一个接口
public interface IDo
{
string SayHello();
}
{
string SayHello();
}
创建我们的主程序,我创建用了一个windows的程序DomainTest,引用上面的类库项目DomainBase
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void addLog(string msg)
{
this.textBox1.AppendText(string.Format("{0}\n", msg));
}
private void btnRef_Click(object sender, EventArgs e)
{
DomainBase.IDo myDo = buildDoActor();
if (myDo != null)
{
string words = myDo.SayHello();
this.addLog(words);
}
}
private DomainBase.IDo buildDoActor()
{
return null;
}
}
{
public Form1()
{
InitializeComponent();
}
private void addLog(string msg)
{
this.textBox1.AppendText(string.Format("{0}\n", msg));
}
private void btnRef_Click(object sender, EventArgs e)
{
DomainBase.IDo myDo = buildDoActor();
if (myDo != null)
{
string words = myDo.SayHello();
this.addLog(words);
}
}
private DomainBase.IDo buildDoActor()
{
return null;
}
}