Biblioteca "amigável" de Injeção de Dependência (DI)

Eu estou pensando no design de uma biblioteca C #, que terá várias funções diferentes de alto nível. Claro, essas funções de alto nível serão implementadas usando oSÓLIDO princípios de design de classe, tanto quanto possível. Como tal, provavelmente haverá classes destinadas aos consumidores a usar diretamente em uma base regular, e "classes de suporte" que são dependências das classes mais comuns "usuário final".

A questão é: qual é a melhor maneira de projetar a biblioteca?

DI agnóstico - Embora adicionar "suporte" básico para uma ou duas bibliotecas DI comuns (StructureMap, Ninject, etc) pareça razoável, eu quero que os consumidores possam usar a biblioteca com qualquer estrutura de DI.Não utilizável em DI - Se um consumidor da biblioteca não estiver usando DI, a biblioteca ainda deverá ser a mais fácil de usar possível, reduzindo a quantidade de trabalho que um usuário precisa fazer para criar todas essas dependências "sem importância" apenas para obter as classes "reais" que eles querem usar.

Meu pensamento atual é fornecer alguns "módulos de registro DI" para as bibliotecas comuns DI (por exemplo, um registro StructureMap, um módulo Ninject), e um conjunto ou classes de fábrica que são não-DI e contêm o acoplamento para as poucas fábricas.

Pensamentos?

questionAnswers(4)

yourAnswerToTheQuestion