Iniezione delle dipendenze - passaggio di oggetti di dominio a dipendenze sottostanti con NInject [chiuso]

-1

Sto lavorando a un progetto più ampio. Spero di aver capito bene DI, basandomi sul fatto che sono in grado di farlo:

// domain object holding configuration ata
var input = new GeneratorInput
{
    Constructions = new List<Construction>(),
    InitialConfiguration = null,
    MaximalNumberOfIterations = 10
};

// poor-man's-DI solution
var container = new ConfigurationContainer(input.InitialConfiguration);
var constructions = new ConfigurationConstructor(input.Constructions);
var solver = new ConfigurationSolver();
var handler = new ConfigurationHandler(container, constructions, solver);
var generatorContext = new GeneratorContext(container, handler, constructions);
var generator = new Generator(generatorContext, input.MaximalNumberOfIterations);

GeneratorInput dovrebbe essere creato in base ai parametri dell'interfaccia utente.

Non riesco a capire un modo per farlo tramite un contenitore DI. Penso di voler usare NInject.

Qual è il modo più semplice per farlo, per favore?

    
posta Patrik Bak 12.08.2017 - 19:43
fonte

1 risposta

1

GeneratorInput should be created based on UI parameters.

Questo significa semplicemente che GeneratorInput non può essere costruito fino a quando non si sa quali sono quei parametri.

Poor mans DI, o Pure DI come Mark Seemanns lo ha rinominato, può fare questa multa per conto proprio. Nessun contenitore richiesto.

Devi semplicemente essere disposto a capire che mentre la radice di composizione (di solito questa è solo la principale) è il posto più sicuro per fare la costruzione (e non mescolarla con il codice di comportamento) non è l'unico posto.

Ciò di cui hai bisogno è un codice che verrà chiamato una volta noti tali parametri. Questo potrebbe essere chiamato con un clic del pulsante. Questo codice rappresenta la radice di composizione per questo oggetto. Ciò significa che la responsabilità di questo codice è la costruzione di questo oggetto. Dovrebbe essere focalizzato su questo. Ti metti nei guai solo se inizi ad aggiungere un po 'di linee che usano quell'oggetto perché ora hai una costruzione mista con un comportamento. Idealmente non userai l'oggetto qui e lo passerai a qualcos'altro che saprà come usarlo.

Separare uso e costruzione è il grande vantaggio che DI fornisce. Ti aiuta a garantire che stai seguendo la Legge di Demeter .

    
risposta data 12.08.2017 - 23:26
fonte

Leggi altre domande sui tag