Spring.Net CIO e Magic Strings
-
12-09-2019 - |
Domanda
Ho riflettuto sul metodo IApplicationContext.GetObject (string name) e sembra fare affidamento abbastanza pesantemente sulle stringhe magiche per ottenere oggetti dal contesto di applicazione. Con altri contenitori come StructureMap è possibile utilizzare farmaci generici per specificare gli oggetti di configurazione e richiesta, ma c'è un il modo migliore di utilizzare le stringhe con il contenitore Spring.Net IoC per richiedere oggetti dal ApplicationContext?
Soluzione
Si potrebbe avere un wrapper che si chiama, prendendo un parametro di tipo generico.
Qualcosa di simile a questo:
public void MyMethod()
{
IMyService myService = ApplicationContextWrapper.Resolve<IMyService>();
}
public static class ApplicationContextWrapper
{
public static T Resolve<T>()
{
return ApplicationContext.Resolve<T>(typeof(T).Name);
}
}
Non come alcuni degli altri contatiners CIO, ma almeno si otterrà un qualche tipo di supporto del compilatore.
Altri suggerimenti
Primavera supporta il CommonServiceLocator tramite un adattatore . Questa interfaccia ha l'API vi aspettavate e anche compilare contro il comune servizio di individuazione in modo da poter passare da contenitori IoC se si vuole, senza dover modificare il codice esistente.