TypeAというタイプがあります。
TypeA は IOne と ITwo の 2 つのインターフェイスを実装します。
public class TypeA : IOne, ITwo
{
public TypeA(IThree ithree)
{
...
}
}
スレッドごとに TypeA のインスタンスが 1 つだけになるように StructureMap を構成したいと考えています。IOne または ITwo のいずれかの解決で、TypeA の同じインスタンス (スレッドごとに 1 つ) が返されるようにします。
次の設定を試しました:
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>();
ただし、これら 2 つの呼び出しは異なるオブジェクトに解決されます。
まず、StructureMap を使用して達成しようとしていることは可能ですか? もしそうなら、どうすればいいですか?