Настройка приложения c # WinForm для нескольких клиентов - PullRequest
5 голосов
/ 11 июня 2011

Подумайте по этому сценарию:

У меня есть приложение c # windows form. Это приложение было одинаковым для всех моих клиентов. Теперь одному из них нужно изменить форму, добавив новое текстовое поле и новую логику.

Я, очевидно, не хочу дублировать свое приложение, и вставка операторов IF с customer-Id для управления логикой может легко привести к коду в стиле спагетти.

Я думаю, что в этой ситуации я могу создать отдельный проект для каждого клиента; Внутри я могу написать собственные формы, реализующие тот же интерфейс, что и форма по умолчанию (и то же самое для логических классов), и я могу попытаться переключить эти dll через файл конфигурации или построить проект с нужной dll клиента (или используя, например, Windsor Castle for DI ).

Это правильный шаблон? Существует по-другому?

обновление

Я пытаюсь перечислить:

Ответы [ 2 ]

3 голосов
/ 11 июня 2011

Я думаю, что в этом случае MEF будет лучшим выбором.Castle больше похож на механизм DI для бизнес-логики, полезный для управления жизненным циклом объекта, особенно когда вы хотите иметь возможность переключать работу программы (несколько небольших потоков или одна большая операция в одном потоке).MEF, с другой стороны, лишает вас необходимости добавлять файл конфигурации для этого типа конфигурации.Вы просто работаете с библиотеками.Я думаю, что MEF лучше всего подходит для клиентских GUI-форм.

1 голос
/ 11 июня 2011

Если вы разрабатываете мультитенантное приложение , существуют DI-фреймворки, такие как Autofac , которые поддерживают этот вид настройки.Взгляните на эту статью

Вы также можете использовать свою систему управления версиями, чтобы помочь вам.Когда вам нужно настроить, создайте ветку и выполните там настройку, чтобы вам не пришлось дублировать код.

...