Estou resolvendo esse problema assim: injetando fábricas de dependências. Nessas fábricas, primeiro resolva a dependência conforme ele é registrado no contêiner e depois "desserialize" todos os dados restantes: json.net permite preencher campos no objeto existente.
Como o código das fábricas acompanha o código de fiação do contêiner de IoC, não acho que o uso container.Resolve
dentro da fábrica viole a regra, que container
deve ser usada apenas em um lugar no código: onde toda a fiação acontece.
A partir de agora, estou tentando tornar esse processo automático (em oposição ao que venho testando essa abordagem) usando reflexão. Sim, não há muito o que resta da própria desserialização do json.net, parte dela é substituída pelo código personalizado, mas acho que por que me preocupar.
Além disso, quais foram seus pensamentos / decisões finais sobre o assunto? Depois de ler este post, vejo duas maneiras: desserializar e injetar; injetar e desserializar (preencher). E ainda acho que meu caminho é melhor. Ficarei feliz em ouvir argumentos contrários a isso (estou pensando em que meu caminho pode ser melhor para o meu caso, mas não consigo imaginar vividamente bons casos alternativos, onde falham, apenas algumas suposições).
This would eliminate the possibility of using Constructor injected DI
-- Por quê? Você ainda pode ter instrutores parametrizados, desde que inclua um construtor padrão para fins de serialização (o construtor padrão pode ser privado, se desejar).