有多种方法可以实现这一点,我将在这里描述一个简单的解决方案。
制作每个插件必须实现的通用接口,以便与核心应用程序集成。这是一个例子:
// Interface which plugins must implement
public interface IPlugin
{
void DoSomething(int Data);
}
// Custom plugin which implements interface
public class Plugin : IPlugin
{
public void DoSomething(int Data)
{
// Do something
}
}
要实际从 dll 加载插件,您需要使用反射,例如:
// Load plugin dll and create plugin instance
var a = Assembly.LoadFrom("MyCustomPlugin.dll");
var t = a.GetType("MyCustomPlugin.Plugin");
var p = (IPlugin)Activator.CreateInstance(t);
// Use plugin instance later
p.DoSomething(123);
您可以为插件程序集和类使用某种命名约定,以便轻松加载它们。