Biblioteca "amigable" de inyección de dependencias (DI)

Estoy considerando el diseño de una biblioteca de C #, que tendrá varias funciones de alto nivel diferentes. Por supuesto, esas funciones de alto nivel se implementarán utilizando elSÓLIDO Principios de diseño de clase tanto como sea posible. Como tal, probablemente habrá clases destinadas a los consumidores a usar directamente de forma regular, y "clases de soporte" que son dependencias de esas clases más comunes de "usuario final".

La pregunta es, ¿cuál es la mejor manera de diseñar la biblioteca para que sea:

Agnóstico de DI: aunque parece razonable agregar "soporte" básico para una o dos de las bibliotecas de DI comunes (StructureMap, Ninject, etc.), quiero que los consumidores puedan usar la biblioteca con cualquier marco de DI.No utilizable como DI: si un consumidor de la biblioteca no utiliza ningún DI, la biblioteca debería ser lo más fácil de usar posible, reduciendo la cantidad de trabajo que tiene que hacer un usuario para crear todas estas dependencias "sin importancia" solo para llegar a Las clases "reales" que quieren usar.

Mi idea actual es proporcionar algunos "módulos de registro DI" para las bibliotecas DI comunes (por ejemplo, un registro StructureMap, un módulo Ninject) y un conjunto o clases de Fábrica que no son DI y contienen el acoplamiento a esas pocas fábricas.

¿Pensamientos?

Respuestas a la pregunta(4)

Su respuesta a la pregunta