Così Inversion Of Control è una descrizione vaga, così Dependency Injection divenne la nuova definizione. Questa è una soluzione molto, molto potente ed è probabilmente altrettanto confusa con qualcuno che non l'ha mai incontrata.I Cinque W di DI, CIO perché sta facendo esplodere il mio cervello
Quindi, nella mia ricerca di non essere un cervo in fari, ho letto. Ho trovato diversi libri fantastici e post online. Ma come tutte le cose meravigliose, più domande sorsero piuttosto che risposte.
Il problema, l'assorbimento di variabili da un progetto sconosciuto da implementare una volta che sono state introdotte nel mio progetto.
La soluzione:
public interface ISiteParameter
{
Guid CustomerId { get; set; }
string FirstName { get; set; }
string LastName { get; set; }
string Phone { get; set; }
}
mio iniettore:
public interface IInjectSiteParameter
{
void InjectSite(ISiteParameter dependant);
}
Poi ho creato questo:
public class SiteContent : IInjectSiteParameter
{
private ISiteParameter _dependent;
#region Interface Member:
public void InjectSite(ISiteParameter dependant)
{
_dependant = dependant;
}
#endregion
}
Poi, per attuare con una condivisa riferimento essere variabili Fed Ho creato una classe da implementare come:
public class SiteParameters : ISiteParameter
{
public Guid Customer Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Phone { get; set; }
}
Ora l'SiteParameters Class
sarà referenziato dall'altro progetto; che mi permetterà di chiamare in realtà queste proprietà quando e dove con:
ISiteParameter i = new ISiteParameter();
MessageBox.Show(i.Guid + i.FirstName + i.LastName + i.Phone);
Quella è stata la realizzazione, ma la mia domanda è questa ... Quando faccio posso utilizzare?
- Constructor iniezione
- Setter iniezione
- interfaccia iniezione
Quando desiderate utilizzare uno o l'altro? E per il compito che ho menzionato dovrei aver implementato un compito così difficile da regolare per eventuali modifiche apportate all'altro progetto?
Sono caduto dalla curva nel mio processo di pensiero?
affido la vostra incursione nel DI, anzi è potente. Come hai ottenuto la configurazione non c'è ancora molto vantaggio rispetto al semplice passaggio di valori specifici tramite firma al metodo. Il vero potere si presenterà quando l'istanza di ISiteParameter contiene metodi definiti specifici per il suo comportamento, a parte le altre istanze di ISiteParameter. – KodeKreachor
@KodeKreachor Stavo riflettendo su come implementare alcuni di questi benefici. Ma io sono un vergine DI/IoC. – Greg
Devo sottolineare che stai tentando di istanziare un'interfaccia '.. –