我有一种叫做 TypeA 的类型。
TypeA 实现了 2 个接口: IOne 和 ITwo
public class TypeA : IOne, ITwo
{
public TypeA(IThree ithree)
{
...
}
}
我想配置 StructureMap 以便每个线程只有一个 TypeA 实例。我希望 IITHER IOne 或 ITwo 的任何分辨率都返回相同的 TypeA 实例(每个线程一个)。
我尝试了以下配置:
ObjectFactory.Configure(x =>
{
var thread = Lifecycles.GetLifecycle(InstanceScope.ThreadLocal);
x.For<TypeA>().LifecycleIs(thread).Use<TypeA>();
x.For<IOne>().LifecycleIs(thread).Use<TypeA>();
x.For<ITwo>().LifecycleIs(thread).Use<TypeA>();
x.For<IThree>().LifecycleIs(thread).Use<TypeB>();
});
然后像这样解决
var test = ObjectFactory.GetInstance<IOne>();
var test2 = ObjectFactory.GetInstance<ITwo>();
但是这两个调用解析到不同的对象。
首先,我尝试使用 StructureMap 实现的目标是什么?如果是这样,那我该怎么做?