Castle Windsor根据属性或配置文件动态注入类型

时间:2011-03-08 20:29:33

标签: castle-windsor

我有个想法设计这样的东西。我的类可以接受在创建类的实例时注册的一系列异常处理程序。

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

现在,我想做这样的事情。我想让Castle Windsor根据应用于类

的属性为我注入处理程序
[LogExceptions(typeof(SomeExceptionHandler), typeof(AnotherExceptionHandler))]
class Foo { // code }

或在配置文件中指定。因此,在前一个示例中,当Castle Windsor想要解析Foo的实例时,它会查看LogExceptions属性并看到它需要通过

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

我想看看Castle Windsor的概念是什么让我能够解决这个问题?

如果我的设计迟钝,请说出来,但提出建设性的想法!谢谢!

1 个答案:

答案 0 :(得分:2)

像这样的东西的最佳扩展点是ComponentModel construction contributors。您需要了解哪些处理程序适用于您的组件,然后为它们构造一组服务覆盖依赖项。