【问题标题】:How better to resolve dependencies in object created by factory?如何更好地解决工厂创建的对象中的依赖关系?
【发布时间】:2016-09-29 10:53:04
【问题描述】:

例如我有依赖:

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

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

【问题讨论】:

    标签: c# unity-container


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-31
      相关资源
      最近更新 更多