GUI Framework Плагин Дизайн - PullRequest
1 голос
/ 03 марта 2009

Как разработчик инфраструктуры плагинов, я хочу указать интерфейс myNameSpace.IPlugin, который должны реализовывать плагины. Возвращаемое значение одного из членов интерфейса, IPlugin.GetWidget (), должно иметь тип, производный от System.Windows.Forms.Control, и оно также должно реализовывать интерфейс myNameSpace.IFoo. Я также хочу позволить разработчикам плагинов возвращать сторонние элементы управления (которые уже являются потомками System.Windows.Forms.Control) из IPlugin.GetWidget (). Каков наилучший способ однозначно указать это требование, кроме документирования, конечно :) и обеспечить его соблюдение? Как разработчик плагинов сможет определить плагин (используя сторонний элемент управления) для удовлетворения этих требований?

1 Ответ

1 голос
/ 07 марта 2009

Ваш дизайн пахнет немного подозрительно. Почему виджеты должны наследоваться от конкретного класса и реализовывать другой не связанный интерфейс? Похоже, ты немного счастлив от наследства. Вместо этого попробуйте это:

interface IPlugin
{
    IWidget Widget { get; }
}

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

Реализован ли IFoo самим элементом управления или другим классом, зависит от разработчика. Ваш код не должен заботиться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...