Créer une instance d'une classe avec des dépendances à l'aide de Autofac

Problème:

Assumer la classe:

public class MyAwesomeClass
{
   private IDependCls _dependCls;
   public MyAwesomeClass(IDependCls dependCls)
   {
       _dependCls = dependCls;
   }

}

Et d'ailleurs j'ai besoin d'obtenir une instance de cette classe, comme suit:

public class SomewhereElse
{
    public void AwesomeMethod()
    {
        //...
        //AwesomeStuff
        //...

        var GetErDone = new MyAwesomeClass();  //PROBLEM! No constructor with 0 arguements
    }
}

Question est, dois-je

Solution proposée 1:

Un) doivent prendre un supplément de constuctor qui résout la dépendance? Par exemple:

   public MyAwesomeClass() //new constructor
   {
       _dependCls = DependencyResolver.Current.GetService<IDependCls>();
   }


public class SomewhereElse
{
    public void AwesomeMethod()
    {
        var GetErDone = new MyAwesomeClass();  //IT WORKS!!
    }
}

Solution proposée 2:

B) utiliser le solveur à l'intérieur de AwesomeMethod juste avant var GetErDone

public class SomewhereElse
{
    public void AwesomeMethod()
    {
        var depCls = _dependCls = DependencyResolver.Current.GetService<IDependCls>();
        var GetErDone = new MyAwesomeClass(depCls);  //IT WORKS!!
    }
}

Autofac solution?

C) Certains autres Autofac?

À la recherche pour les meilleures pratiques, ainsi qu'une bonne Autofac solution si possible. Je pense que la première manière est la pire que facultatif dépendances pourrait conduire à beaucoup de désordre.

Résumé:

Comment puis-je obtenir un new MyAwesomeClass() quand MyAwesomeClass a des dépendances?

Pensez-vous vraiment dire facultatif quand vous dites ça? Si c'est vraiment facultatif, vous voudrez peut-être chercher dans la propriété de l'injection. Si non, et votre ctor est encombré en raison de trop nombreuses dépendances, peut-être que votre classe est d'en faire trop (voir aussi cette réponse).
Je n'ai pas de question sur constructeur de l'encombrement, plutôt que de créer une instance d'une classe qui a besoin de constructeur d'injection.
Merci de ne pas poster la solution réponse. Pas comme tout corps d'autre a ce problème... /s

OriginalL'auteur Mihalis Bagos | 2012-05-29