Я пытаюсь сохранить два экземпляра одного и того же типа в двух разных потоках с помощью StructureMap. Каждая нить должна иметь свой собственный экземпляр:StructureMap LifeCycleIs new 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 (новую конфигурацию ThreadLocalStorage()), я бы ожидал, что метод ObjectFactory.GetInstance() в ConfigureThreadLocalStorageTest1 вернет null?
Было бы неплохо, если бы вы могли нажать «Принять», если мой ответ ответит на ваш вопрос! ;) – Clafou