Castle Windsor - Вложенные зависимости времени выполнения - PullRequest
1 голос
/ 07 января 2009

Я использую контейнер Castle Windosr. Я хочу быть в состоянии указать некоторые зависимости конструктора во время выполнения, что вы, очевидно, можете сделать, используя перегрузку Resolve, которая принимает словарь, все хорошо и хорошо. Однако, если я хочу указать зависимость времени выполнения для зависимости корня, то я потерян, в настоящий момент я обошел вокруг, явно создавая каждый и добавляя его. По сути, это сценарий декоратора, и я хочу получить экземпляр декаратор, в то же время обеспечивая зависимость во время выполнения для декорируемого объекта. Есть идеи? Я бы предпочел не делать то, что я делаю ниже, и я бы предпочел, чтобы конструктор 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;

        }

1 Ответ

1 голос
/ 23 января 2009

Вы, вероятно, могли бы справиться с этим, написав собственную реализацию ISubDependencyResolver , которая сделает это за вас. Один контейнер не позволяет этого, и, скорее всего, никогда не позволит. Зачем? Краткий ответ - делая это, вы делаете предположения о зависимостях зависимостей вашего компонента, что является «нет-нет», а контейнер предназначен для удаления такого рода знаний из вызывающей стороны.

...