【发布时间】:2011-04-01 16:28:43
【问题描述】:
假设我有一个这样的组件
public class MyComponent
{
public MyComponent(string name)
{
}
}
我基本上想让提供的构造函数参数在解析它时作为组件标识符的一部分。如果您从未使用该组参数解决它,它将实例化一个新参数。
换句话说,我想以某种方式修改以下测试以使其成功:
IWindsorContainer container = new WindsorContainer();
container.Register(Component.For<MyComponent>());
MyComponent a1 = container.Resolve<MyComponent>(new { name = "a" });
MyComponent a2 = container.Resolve<MyComponent>(new { name = "a" });
MyComponent b = container.Resolve<MyComponent>(new { name = "b" });
Assert.AreSame(a1, a2);
Assert.AreNotSame(a1, b);
目前它失败了,因为它将使用 name=a 进行实例化,然后为所有未来的 name=a 和 name=b 返回相同的对象。
谢谢!
【问题讨论】:
-
您确定要在解决时而不是注册时执行此操作吗?
标签: castle-windsor ioc-container