CIO per un'applicazione console?
-
08-07-2019 - |
Domanda
Qualcuno può pensare a una buona soluzione per ottenere il CIO in un'applicazione console?
Al momento stiamo solo usando una classe statica con il seguente metodo:
public static T Resolve<T>()
{
return dependencyResolver.Resolve<T>();
}
Vorrei che l'esperienza fosse perfetta, ma non riesco a pensare a un modo per ottenere questo da un'applicazione console.
Soluzione
Dovrai effettuare una chiamata di localizzatore di servizio (Resolve<T>()
) da qualche parte. Il trucco è di toglierlo il più possibile. Per le applicazioni console questo bootstrap avviene nel metodo Main()
. Fallo lì e minimizza quelle Risolve le chiamate altrove e sarai eccezionale. Per la maggior parte delle dipendenze, utilizzare l'iniezione del costruttore.
Altri suggerimenti
Le applicazioni console non hanno alcuna limitazione rispetto a un'applicazione web o form per IoC. Puoi usare qualsiasi tua scelta (Spring, Ninject, Unity, ecc.). Molti di questi sono configurabili con file XML all'esterno dell'applicazione console e alcuni come Ninjector richiedono una configurazione all'interno dell'applicazione.
Ho usato Spring.NET da un'app console senza problemi. Devi solo puntarlo sul tuo file di configurazione e collegherà tutte le dipendenze. Ciò che poi fai con quegli oggetti dipende ovviamente da ciò che l'app della tua console sta cercando di fare.
Acquista Microsoft Unity .