StructureMap,ObjectFactory的和的IContainer
-
22-09-2019 - |
题
我用StructureMap工作我的IoC的需求。
为了使事情变得愉快检验的,我身边路过IContainer
情况下尽可能,通常作为构造函数的参数。为方便起见,我想能够回退到使用ObjectFactory
为参数构造。
做到这一点最简单的方法(我认为)是简单地得到IContainer
的ObjectFactory
类包装,并传递到其他构造。不幸的是,我到处都找不到这种情况下被公开曝光。
的问题是:
有没有办法让IContainer
内ObjectFactory
所以我能应付简单,如用户提供的实例?
另外,有一种方法来复制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()方法,可以让你保持你的瞬变同为嵌套集装箱的寿命。嵌套容器经常使用的“使用”的声明中,并用于控制之类的数据库事务的边界状态非常方便。
不隶属于 StackOverflow