Prendere il seguente programma inutile:Risoluzione classi senza registrarti usando il Castello di Windsor
class Program
{
static void Main(string[] args)
{
IUnityContainer unityContainer = new UnityContainer();
IWindsorContainer windsorContainer = new WindsorContainer();
Program unityProgram = unityContainer.Resolve<Program>();
Program castleProgram = windsorContainer.Resolve<Program>();
}
}
L'UnityContainer mi restituirà un'istanza di programma, dove, come il contenitore di Windsor getterà un ComponentNotFoundException.
Sono in grado di visualizzare gli argomenti per entrambi i comportamenti e non mi dispiace quale sia la fine, tuttavia Prism V2 Drop 8 (l'ultimo al momento della scrittura) si basa sul comportamento di Unity internamente, richiedendo classi che non sono state registrate .
Anziché trovare e registrare tutte queste classi per Prism, preferirei che Windsor si comportasse come Unity. Non ho trovato nulla su google per aiutarmi a fare questo (anche se la mia terminologia potrebbe essere sbagliata) e la documentazione di Windsor è piuttosto scadente ...
Qualcuno può suggerire una soluzione a questo problema?
non fa questo genere di sconfitta lo scopo di un IoC? Se aveste risolto IProgram, troverebbe una definizione di classe che implementa IProgram in quel caso? – jishi
Immagino che tu ottenga ancora il vantaggio dell'iniezione di dipendenza sulla classe anche se non usi un'interfaccia. –
jishi: le risposte alle tue domande sono no e no. No, non sconfigge lo scopo di IoC. No, non mappa le interfacce senza che siano registrate. – Anthony