Я размышляю над дизайном библиотеки С#, который будет иметь несколько различных функций высокого уровня. Конечно, эти высокоуровневые функции будут реализованы с использованием SOLID принципов дизайна класса как можно больше. Таким образом, вероятно, будут классы, предназначенные для потребителей, которые будут использоваться непосредственно на регулярной основе, и "классы поддержки", которые являются зависимостями от более распространенных классов "конечного пользователя".
Вопрос в том, что лучший способ создать библиотеку так:
- DI Agnostic. Хотя добавление базовой поддержки для одной или двух из общих библиотек DI (StructureMap, Ninject и т.д.) представляется разумным, я хочу, чтобы потребители могли использовать библиотеку с любой инфраструктурой DI.
- Без использования DI - если потребитель библиотеки не использует DI, библиотека должна по-прежнему быть максимально простой в использовании, уменьшая объем работы, которую пользователь должен делать, чтобы создать все эти "несущественные" зависимости просто чтобы перейти к "реальным" классам, которые они хотят использовать.
Мое настоящее мышление состоит в том, чтобы предоставить несколько "модулей регистрации DI" для общих библиотек DI (например, реестр StructureMap, модуль Ninject) и классы классов или Factory, которые не являются DI и содержат связь с эти несколько фабрик.
Мысли?