Je dois souligner qu'il n'est pas forcément du mal à sauter le constructeur de l'injection et de l'utilisation statique d'injection. Il y a de grandes applications de cela, l'exemple le plus concret est de l'utiliser dans un modèle de Fabrique de la mise en œuvre.
public static class ValidationFactory
{
public static Result Validate<T>(T obj)
{
try
{
var validator = ObjectFactory.GetInstance<IValidator<T>>();
return validator.Validate(obj);
}
catch (Exception ex)
{
var result = ex.ToResult();
...
return result;
}
}
}
- Je l'utiliser avec StructureMap à gérer ma couche de validation.
Edit: un Autre exemple, j'ai de l'utilisation du container directement est de faire de certains de vos objets de domaine être singletons, sans pour autant rendre les classes statiques et l'introduction de toutes les wierdness que les classes statiques faire.
Dans certains de mes points de vue j'ai le fil jusqu'certaines entités de ce genre. Normalement, je devrais nous un Enum avec une Description de l'attribut de me donner 3 choix de valeur, mais la 3ème, dans ce cas, doit être une chaîne de caractères aussi et pas un int, donc j'ai créé une interface avec ces 3 propriétés et hériter de tous les objets du domaine de lui. Ensuite, j'ai mon conteneur scan de mon assemblée et enregistrer automatiquement puis de les sortir, j'ai juste
SomeObject ISomeView.GetMyObject
{
get { return new SomeObject { EmpoweredEnumType =
ObjectFactory.GetNamedInstance<IEmpEnum>("TheObjectName");
}
}