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

例如,我有依赖:

public interface IMyDependency { } public class MyDependency : IMyDependency { } 

注入MyClass对象:

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

我还有一个Factory,它创建了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(); 

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

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

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

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