Castle Windsor вводит типы динамически на основе атрибутов или конфигурационного файла - PullRequest
0 голосов
/ 08 марта 2011

У меня есть идея спроектировать что-то вроде этого. Мой класс может принимать последовательность обработчиков исключений, которые регистрируются при создании экземпляра класса.

class Foo {
    public Foo (IEnumerable<UnhandledExceptionEventHandler> handlers) {
        foreach(var handler in handlers) {
            AppDomain.CurrentDomain.UnhandledException += handler;
        }
    }
}

Теперь я бы хотел сделать что-то подобное. Я хочу, чтобы Касл Виндзор вводил мне обработчики либо на основе атрибутов, примененных к классу

[LogExceptions(typeof(SomeExceptionHandler), typeof(AnotherExceptionHandler))]
class Foo { // code }

или указано в конфигурационном файле. Поэтому в первом примере, когда Castle Windsor хочет разрешить экземпляр Foo, он смотрит на атрибут LogExceptions и видит, что ему нужно создать Foo через

new Foo(new[] { new SomeExceptionHandler(), new AnotherExceptionHandler() });

Какие концепции в замке Виндзор, на которые я хочу взглянуть, позволят мне решить эту проблему?

Если мой дизайн запаздывает, скажите, пожалуйста, но предлагайте конструктивные идеи! Спасибо!

1 Ответ

2 голосов
/ 09 марта 2011

Лучшей точкой расширения для подобных вещей является Составитель компонентов ComponentModel . Вам необходимо выяснить, какие обработчики применяются к вашему компоненту, а затем создать для них массив зависимостей переопределения служб.

...