为了满足我的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; }
}发布于 2010-01-26 21:16:40
ObjectFactory公开一个容器属性,该属性为您提供要查找的IContainer。
无论何时您需要一个IContainer (不应该经常使用),您都可以在类ctor中使用它的依赖项。
public class INeedAContainer
{
private readonly IContainer _container;
public INeedAContainer(IContainer container)
{
_container = container;
}
// do stuff
}我不认为有什么方法可以克隆IContainer。有一个container.GetNestedContainer()方法,它允许您在嵌套容器的生存期内保持瞬态不变。嵌套容器通常在“使用”语句中使用,对于控制数据库事务边界等事物的状态非常方便。
https://stackoverflow.com/questions/2141519
复制相似问题