我正在尝试使用 StructureMap 将两个相同类型的实例存储在两个不同的线程中。每个线程都应该有自己的实例:
[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?