我正在编写一个支持插件的应用程序。插件创建者负责为其创建的插件提供一些实例。提供这些实例有两种选择。
备选案文1:
public interface IGiveMe1 { INeed1 Need1 { set; } }
public interface IGiveMe2 { INeed2 Need2 { set; } }
public class MyPlugin : IGiveMe1, IGiveMe2
{
// This has to be parameterless
MyPlugin() { ... }
#region IGiveMe1 Members
public INeed1 Need1 { set { ... } }
#endregion
#region IGiveMe2 Members
public INeed2 Need2 { set { ... } }
#endregion
}
插件创建者使用必需的无参数构造函数创建实例后,会查找插件类实现的接口。若插件实现了IGiveMe1,插件创建者将调用ined1的setter。同样适用于IGiveMe2.INeed2。
Plugin writer编写的插件如下:
public class MyPlugin
{
MyPlugin(INeed1 need1, INeed2 need2)
{
...
}
}
如果要为这个应用程序编写插件,您会选择哪种方法?