UserControl зависит от классов бизнес-логики - PullRequest
2 голосов
/ 28 марта 2011

Я делаю элемент управления диаграммой, который в настоящее время является просто UserControl в более крупной папке проекта, но мне интересно, возможно ли / как вытащить его для использования в качестве элемента управления для нескольких проектов.Я думаю, тогда я должен поместить его в свой собственный проект, содержащий только элемент управления?(Я никогда раньше не создавал универсальный пользовательский элемент управления, только имел их в проектах)

Проблема в этом случае заключается в том, что элемент управления диаграммой зависит от пользовательского класса TimeSeries, который является частью бизнес-логикибольшой проект.Обновления в этом классе запускают события, которые пользовательский элемент управления слушает, для обновления диаграммы.Этот класс TimeSeries будет также присутствовать в других проектах, использующих элемент управления, но, очевидно, он не будет "тем же" классом.

Так что это означает, что я не могу просто выделить этот пользовательский элемент управления как есть.Но что это значит, у меня есть некоторые плохие структурные практики здесь?Как бы вы предложили продолжить?

1 Ответ

1 голос
/ 28 марта 2011

При помещении UserControl в собственный проект также создайте интерфейс:

interface ITimeSeries
{
     // Stuff that the UserControl calls on the TimeSeries
}

Тогда в ваших основных проектах, которые имеют свои собственные TimeSeries:

class TimeSeries : ITimeSeries
{
    // Implement the methods on the interface
}

Тогда ваш UserControl должен либо взять ITimeSeries в своем конструкторе, либо иметь открытое поле / свойство типа ITimeSeries, которое может быть установлено любым проектом, который его использует. Таким образом, когда ему нужно использовать TimeSeries, ему все равно, какую реализацию он использует.

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