2016-09-29 28 views
0

比如我有依赖性:如何更好地解决工厂创建的对象中的依赖关系?

public interface IMyDependency 
{ 
} 

public class MyDependency : IMyDependency 
{ 
} 

内喷射在MyClass的对象:

public interface IMyInterface 
{ 
} 

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

另外我有一个工厂,创建MyClass的实例:

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>(); 

如果我创建MyClass的带有“新”关键字的实例将无法解析。或者我应该逃离Factory并将逻辑移入MyClass的构造函数中?并将其注册到容器中后,如container.RegisterType()?

回答

0

对于独立于您创建的实例的依赖项,将它们注入工厂并存储它们直到需要。

对于独立于创建上下文但需要为每个创建实例重新创建的依赖项,将工厂注入工厂并存储它们。

对于依赖于创建上下文的依赖关系,将它们传递给工厂的Create方法。

相关问题