1

是否有指定依赖项映射到容器中已有对象的属性的快捷方式?我知道我可以写一个工厂方法来做到这一点,只是想知道是否有更优雅的方式。

我可以指定组件 A 具有映射到组件 B 实例的依赖项,方法是命名 A,然后为 B 编写安装程序,如下所示:

container.Register(Component.For<IMdiController>()
                        .ImplementedBy<MdiController>()
                        .DependsOn(Dependency.OnComponent("shell", "shell")));

在此示例中,假设依赖项“shell”不映射到组件“shell”,而是映射到该组件的属性(例如,“shell.SomeProperty” - 我已经尝试过这种点语法,但它不起作用)。

4

1 回答 1

1

我可能没有正确理解您的问题,但也许您想要的是这里的动态参数

以下是文档中对此属性的描述:

有时您需要提供依赖项,直到组件创建时才知道。例如,假设您需要服务的创建时间戳。你在注册的时候就知道如何获取它,但是你不知道它的具体值是多少(而且确实每次创建一个新实例都会不同)。在这种情况下,您使用 DynamicParameters 方法。

在您的情况下,您可以执行以下操作,以便在从容器解析SomeProperty的组件上调用该属性Shell,以获取something依赖项的值。

container.Register(
    Component
        .For<IMdiController>()
        .ImplementedBy<MdiController>()
        .DynamicParameters((k, d) => d["something"] = k.Resolve<Shell>().SomeProperty));

我不确定像这样调用 resolve 是否对您有影响,但也许没关系。

于 2012-08-13T06:54:22.833 回答