我用StructureMap工作我的IoC的需求。

为了使事情变得愉快检验的,我身边路过IContainer情况下尽可能,通常作为构造函数的参数。为方便起见,我想能够回退到使用ObjectFactory为参数构造。

做到这一点最简单的方法(我认为)是简单地得到IContainerObjectFactory类包装,并传递到其他构造。不幸的是,我到处都找不到这种情况下被公开曝光。

的问题是:

有没有办法让IContainerObjectFactory所以我能应付简单,如用户提供的实例?

另外,有一种方法来复制ObjectFactory的配置到一个新的Container实例?

示例:

我想能够执行以下操作:

public class MyClass
{
    public MyClass()
    {
        Container = ... // The ObjectFactory container instance.
    }

    public MyClass(IContainer container)
    {
        Container = container;
    }

    public IContainer Container { get; private set; }
}
有帮助吗?

解决方案

的ObjectFactory公开了一个容器属性,让你你正在寻找的IContainer。

任何时候你需要一个的IContainer(这不应该是经常),你总是可以依赖它在你的类构造函数。

public class INeedAContainer
{
    private readonly IContainer _container;

    public INeedAContainer(IContainer container)
    {
        _container = container;
    }

    // do stuff
}

我不认为有一种方法可以克隆的IContainer。有一个container.GetNestedContainer()方法,可以让你保持你的瞬变同为嵌套集装箱的寿命。嵌套容器经常使用的“使用”的声明中,并用于控制之类的数据库事务的边界状态非常方便。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top