我使用结构图来解析我的依赖关系,但是我有一个相当特殊的情况,我希望通过方法调用构建依赖关系。 每次我使用GetInstance()时都会调用此方法,但它只执行一次。
我的声明如下:
x.For<UserService>().Use(c => { return MultiObjectProvider.GetInstance<UserService>(); });
也尝试了
x.For<UserService>().LifecycleIs(new ThreadLocalStorageLifecycle()).Use(c => { return MultiObjectProvider.GetInstance<UserService>(); });
没有改变任何东西。 有谁知道我每次都能如何解决结构图?
答案 0 :(得分:2)
那应该有用。我认为问题可能在你的MultiObjectProvider.GetInstance
方法中(可能在连续调用中返回相同的实例)而不是在这里。
这是一个快速的单元测试,我把它放在一起模仿你拥有的东西(我只使用了System.Guid而不是你的UserService),并通过了。
[TestInitialize]
public void Initialize()
{
ObjectFactory.Initialize(x =>
{
x.For<Guid>().Use(c => { return Guid.NewGuid(); });
});
}
[TestMethod]
public void Test()
{
var o1 = ObjectFactory.GetInstance<Guid>();
var o2 = ObjectFactory.GetInstance<Guid>();
Assert.AreNotSame(o1, o2);
}
旁注:您可以按如下方式简化语法:
x.For<UserService>().Use(() => MultiObjectProvider.GetInstance<UserService>());
甚至
x.For<UserService>().Use(MultiObjectProvider.GetInstance<UserService>());