GUI框架插件设计

时间:2009-03-03 02:32:35

标签: user-interface plugins frameworks

作为一个插件框架开发人员,我想指定插件必须实现的接口myNameSpace.IPlugin。其中一个接口成员IPlugin.GetWidget()的返回值必须是从System.Windows.Forms.Control派生的类型,并且还必须实现myNameSpace.IFoo接口。我还想让插件开发人员从IPlugin.GetWidget()返回第三方控件(已经是System.Windows.Forms.Control后代)。明确指定此要求的最佳方法是什么,除了记录,当然:)并强制执行它?插件开发人员如何设计插件(使用第三方控件)来满足这些要求?

1 个答案:

答案 0 :(得分:1)

你的设计闻起来有点腥。为什么小部件必须从具体类继承并实现另一个不相关的接口?听起来你有点继承 - 快乐。而不是那样,试试这个:

interface IPlugin
{
    IWidget Widget { get; }
}

interface IWidget
{
    System.Windows.Forms.Control Control { get; }
    IFoo Foo { get; }
}

IFoo是由控件本身还是由另一个类实现的,应该由实现者来决定。你的代码不应该在意。