【发布时间】:2017-03-04 14:33:08
【问题描述】:
我想创建一个Plugin架构所以我创建了如下界面
public interface IPlug
{
string Id { get; }
string Name { get; }
byte IsOn { get; }
bool Execute();
}
现在我将上面的接口引用到另一个类库项目。
namespace PlugANameSpace
{
public class PlugA : IPlug
{
private byte _isOn;
public string Id
{
get {return "6666"; }
}
public byte IsOn
{
get { return _isOn; }
}
public string Name
{
get { return "PlugA"; }
}
public PlugA()
{
LoadFromRegistry();
}
public bool Execute()
{
// do some thing that returns true for success or false for error
}
private void LoadFromRegistry()
{
//register in registry
}
}
}
上面的类库被复制到主程序集文件中,并存储在“插件”文件夹中。然后我尝试使用以下代码加载插件。
IPlug plug= Activator.CreateInstanceFrom(file, typeof(IPlug).FullName) as IPlug;
文件是从Directory.GetFiles方法得到的dll文件。
当我尝试创建实例时,它会抛出错误“无法从程序集 'PlugA, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' 加载类型 'IPlug'。”
我做错了什么?
【问题讨论】:
标签: c# plugins assemblies