【问题标题】:Castle Windsor - Nested runtime dependenciesCastle Windsor - 嵌套运行时依赖项
【发布时间】:2009-01-23 06:11:53
【问题描述】:

我正在使用 Castle Windosr 容器。我希望能够在运行时指定一些构造函数依赖项,这显然可以通过使用带有字典的 Resolve 重载来完成,一切都很好。但是,如果我想为根的依赖项指定运行时依赖项,那么我就迷路了,目前我已经通过显式创建每个并将其嵌入来解决。本质上它是一个装饰器场景,我想获得一个实例decator,同时在运行时为正在装饰的对象提供依赖项。有任何想法吗?我宁愿不必做我在下面做的事情,也不想让 decarator 构造函数填充下面的对象,因为有时依赖项会不一样。

   public static IActivity GetActivityFromIoC(string key, Message message, Audit audit)
        {

            IActivity activity = IoC.Resolve<IActivity>(key, new Dictionary<
                                                                              string, object>(){
                { "message", message }
                });

            IActivity auditingActivity = IoC.Resolve<IActivity>("auditing.activity", new Dictionary<
                                                                              string, object>(){
            { "activity", activity },     
            { "message", message },
            { "audit", audit }

                });

            return auditingActivity;

        }

【问题讨论】:

    标签: inversion-of-control castle-windsor


    【解决方案1】:

    您可能可以通过编写自己的 ISubDependencyResolver 实现来处理这个问题,该实现会为您做到这一点。 单独的容器不允许这样做,而且很可能永远不会。 为什么?简短的回答是 - 通过这样做,您可以对组件的依赖项做出假设,这是一个禁忌,容器就是要从调用者那里删除这种知识。

    【讨论】:

    • 我在工作中出演了这个,所以我可以在家里回答它,但你打败了我 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多