Problem:mit Abhängigkeiten Instanz einer Klasse erstellen Autofac mit
die Klasse Angenommen:
public class MyAwesomeClass
{
private IDependCls _dependCls;
public MyAwesomeClass(IDependCls dependCls)
{
_dependCls = dependCls;
}
}
Und woanders muss ich eine Instanz dieser Klasse bekommen, etwa so:
public class SomewhereElse
{
public void AwesomeMethod()
{
//...
// AwesomeStuff
//...
var GetErDone = new MyAwesomeClass(); // PROBLEM! No constructor with 0 arguements
}
}
Frage ist, kann ich
Vorgeschlagene Lösung 1:
A) muss ein zusätzlicher Konstruktor erstellt werden, der die Abhängigkeit auflöst? Zum Beispiel:
public MyAwesomeClass() // new constructor
{
_dependCls = DependencyResolver.Current.GetService<IDependCls>();
}
public class SomewhereElse
{
public void AwesomeMethod()
{
var GetErDone = new MyAwesomeClass(); // IT WORKS!!
}
}
Lösungsvorschlag 2:
B) verwenden, um die Resolver innerhalb AwesomeMethod
direkt vor var GetErDone
public class SomewhereElse
{
public void AwesomeMethod()
{
var depCls = _dependCls = DependencyResolver.Current.GetService<IDependCls>();
var GetErDone = new MyAwesomeClass(depCls); // IT WORKS!!
}
}
Autofac Lösung?
C) Einige andere Autofac-Wege?
Auf der Suche nach Best Practices, sowie eine gute Autofac-Lösung, wenn möglich. Ich denke, der erste Weg ist der schlimmste, da optionale Abhängigkeiten zu viel Unordnung führen können.
Zusammenfassung:
Wie erhalte ich eine new MyAwesomeClass()
wenn MyAwesomeClass
Abhängigkeiten?
Meinst du wirklich _optional_ wenn du es sagst? Wenn es wirklich optional ist, sollten Sie sich die Property-Injection ansehen. Wenn nicht, und Ihr ctor ist wegen zu vieler Abhängigkeiten überladen, vielleicht macht Ihre Klasse zu viel (siehe auch [diese Antwort] (http://stackoverflow.com/a/2420245/1282778)). –
Ich habe keine Frage zu Konstruktor-Clutter, anstatt eine Instanz einer Klasse zu erstellen, die eine Konstruktorinjektion benötigt. –
Danke, dass Sie die Lösungsantwort nicht gepostet haben. Nicht wie jeder andere Körper hat dieses Problem .../s –