2016-09-29 3 views
0

Zum Beispiel habe ich Abhängigkeit:Wie können Abhängigkeiten in Objekten, die von Factory erstellt wurden, besser aufgelöst werden?

public interface IMyDependency 
{ 
} 

public class MyDependency : IMyDependency 
{ 
} 

Das in MyClass Objekt injiziert:

public interface IMyInterface 
{ 
} 

public class MyClass : IMyInterface 
{ 
    [Dependency] 
    public IMyDependency MyDependency { get; set; } 
} 

Auch habe ich eine Fabrik, die MyClass-Instanz erstellt:

public interface IFactory 
{ 
    IMyInterface CreateMyObject(); 
} 


public class Factory : IFactory 
{ 
    public IMyInterface CreateMyObject() 
    { 
     // some checks before creation 
     // for. ex check if this type of object supported by OS and thow exception if not 

     return new MyClass(); 
    } 
} 

... 
container.RegisterType<IFactory, Factory>(); 

Wenn ich MyClass erstellen Instanz mit "new" Schlüsselwort meine Abhängigkeiten werden nicht aufgelöst werden. Oder ich sollte aus Factory fliehen und Logik in den Konstruktor von MyClass verschieben? Und nach der Registrierung im Container wie container.RegisterType()?

Antwort

0

Für Abhängigkeiten, die unabhängig von der erstellten Instanz sind, injizieren Sie sie in die Factory und speichern sie, bis sie benötigt werden.

Für Abhängigkeiten, die unabhängig vom Erstellungskontext sind, aber für jede erstellte Instanz neu erstellt werden müssen, werden Fabriken in die Factory injiziert und gespeichert.

Für Abhängigkeiten, die vom Kontext der Erstellung abhängig sind, übergeben Sie sie in die Create Methode der Fabrik.

Verwandte Themen