作为一个插件框架开发人员,我想指定插件必须实现的接口myNameSpace.IPlugin。其中一个接口成员IPlugin.GetWidget()的返回值必须是从System.Windows.Forms.Control派生的类型,并且还必须实现myNameSpace.IFoo接口。我还想让插件开发人员从IPlugin.GetWidget()返回第三方控件(已经是System.Windows.Forms.Control后代)。明确指定此要求的最佳方法是什么,除了记录,当然:)并强制执行它?插件开发人员如何设计插件(使用第三方控件)来满足这些要求?
答案 0 :(得分:1)
你的设计闻起来有点腥。为什么小部件必须从具体类继承并实现另一个不相关的接口?听起来你有点继承 - 快乐。而不是那样,试试这个:
interface IPlugin
{
IWidget Widget { get; }
}
interface IWidget
{
System.Windows.Forms.Control Control { get; }
IFoo Foo { get; }
}
IFoo是由控件本身还是由另一个类实现的,应该由实现者来决定。你的代码不应该在意。