Spring.Net et cordes IoC magique
-
12-09-2019 - |
Question
J'ai pensé à la méthode IApplicationContext.GetObject (nom de chaîne) et il semble compter assez lourdement sur les chaînes magiques pour obtenir des objets du contexte d'application. Avec d'autres conteneurs comme StructureMap vous pouvez utiliser les médicaments génériques pour spécifier les objets de configuration et de demande, mais est-il un mieux que d'utiliser des chaînes avec le conteneur Spring.Net IoC pour demander des objets du ApplicationContext?
La solution
Vous pourriez avoir une enveloppe que vous appelez, en prenant un paramètre de type générique.
Quelque chose comme ceci:
public void MyMethod()
{
IMyService myService = ApplicationContextWrapper.Resolve<IMyService>();
}
public static class ApplicationContextWrapper
{
public static T Resolve<T>()
{
return ApplicationContext.Resolve<T>(typeof(T).Name);
}
}
Pas aussi bon que quelques-uns des autres contatiners IoC, mais au moins vous obtiendrez une sorte de soutien du compilateur.
Autres conseils
Spring supporte le CommonServiceLocator via un adaptateur . Cette interface a l'API que vous attendiez et vous compilez aussi contre la commune localisateur de services afin que vous puissiez passer des conteneurs IoC si vous voulez sans avoir à modifier le code existant.