1

我正在使用结构映射来解决我的依赖关系,但是我有一个相当特殊的情况,我希望通过方法调用来构建依赖关系。每次我无法 GetInstance() 时都应该调用此方法,但它只执行一次。

我的声明如下所示:

x.For<UserService>().Use(c => { return MultiObjectProvider.GetInstance<UserService>(); });

也在尝试

x.For<UserService>().LifecycleIs(new ThreadLocalStorageLifecycle()).Use(c => { return MultiObjectProvider.GetInstance<UserService>(); });

这并没有改变任何东西。有谁知道我如何让结构图每次都解析?

4

1 回答 1

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>());
于 2012-06-26T08:52:40.553 回答