У меня возникли проблемы с выбором пути...
У меня есть это приложение, которое состоит из одного базового проекта и одного проекта для приложения, проект приложения содержит код, ориентированный на конкретную систему, систему заявление.
Базовый проект — это абстрактный класс, содержащий абстрактные методы, которые реализует каждый системный проект приложения.
Дело в том, что проекты системных приложений могут/будут иметь специфические настройки заказчика, и я не хочу помещать этот код в сборку системного приложения.
Я не знаю, с чего начать и как это сделать так, чтобы это было безопасно для будущего, было легко поддерживать и чтобы я мог добавить больше пользовательского кода, не переписывая сборку системного приложения.
Идея состоит в том, чтобы иметь один базовый проект (dll), один проект системного приложения для каждой системы (dll), а затем помещать индивидуальные настройки клиента в один уникальный проект клиента (dll).
Rob.Core.dll
Rob.Application.BigSystem.dll
Rob.Application.BigSystem.Customer.BigCompany .dll
Rob.Core.dll — это базовый абстрактный проект.
Rob.Application.BigSystem.dll — это системный проект (BigSystem), производный от Rob.Core.dll.
Rob.Application.BigSystem.dll должен проверить, есть ли у текущего клиента, BigCompany, какие-либо уникальные настройки, и, если да, загрузить файл Rob.Application. Сборка BigSystem.Customer.BigCompany.dll, которая может содержать переопределения методов или расширений объектов, дополнительные поля и т. д.
Что ж, время подвести итоги...
Я не уверен, куда идти, я мог бы создать один базовый проект (абстрактный) и из каждой системы вывести конкретный проект, похоже, это способ начать.
Затем создайте новый проект для каждого клиента с набором уникальных настроек и просто переопределите все методы в конкретном системном проекте.
Тогда проблема в том, какой проект выполняется во время выполнения? Системный проект или уникальный проект заказчика?
Если выполняется системный проект, как он должен загрузить все настройки клиента (если они есть, не каждый клиент получил уникальные настройки)?
Это довольно большой вопрос, но я надеюсь на некоторые советы, которые помогут мне написать архитектуру.
С уважением
Роберт