두 개의 다른 스레드에서 동일한 유형의 인스턴스 두 개를 StructureMap을 사용하여 저장하려고합니다. 각 스레드는 자체 인스턴스가 있어야합니다.StructureMap LifeCycleIs 새로운 ThreadLocalStorageLifeCycle이 스레드 로컬이 아닙니까?
[TestMethod]
public void ThatObjectFactoryReturnsDifferentTypesFromTwoThreadsWhenConfiguredThreadLocalStorage()
{
var t = new Thread(ConfigureThreadLocalStorageTest1);
ITestObjectFactory test2 = new Test2();
ObjectFactory.Configure(x => x.For<ITestObjectFactory>().LifecycleIs(new ThreadLocalStorageLifecycle()).Use(test2));
t.Start();
t.Join();
test2 = ObjectFactory.GetInstance<ITestObjectFactory>();
Assert.IsInstanceOfType(test2, typeof(Test2));
Assert.IsInstanceOfType(_staticTest, typeof(Test1));
}
static void ConfigureThreadLocalStorageTest1()
{
System.Diagnostics.Debug.WriteLine(ObjectFactory.TryGetInstance<ITestObjectFactory>());
ITestObjectFactory test1 = new Test1();
ObjectFactory.Configure(x => x.For<ITestObjectFactory>().LifecycleIs(new ThreadLocalStorageLifecycle()).Use(test1));
_staticTest = ObjectFactory.GetInstance<ITestObjectFactory>();
}
}
public class Test2 : ITestObjectFactory
{
}
public class Test1 : ITestObjectFactory
{
}
public interface ITestObjectFactory
{
}
그러나 위의 테스트는 실패합니다. 또한 LifecycleIs (new ThreadLocalStorage()) 구성을 사용하면 ConfigureThreadLocalStorageTest1의 ObjectFactory.GetInstance() 메서드가 null을 반환 할 것으로 예상됩니까?
내 대답이 귀하의 질문에 대한 답변 인 경우 동의를 클릭해도 좋을까요? ;) – Clafou