【发布时间】:2011-11-03 16:24:22
【问题描述】:
我正在使用 Autofac 来处理我的应用程序中的依赖注入。但是,我有一个组件可以在运行时执行一些反射魔法,但在编译时我不知道它需要什么依赖项。
通常,我会让这个组件直接引用容器并解析它想要的任何东西。但是,实例化这个类的类没有对 Container 的引用。
实际上,我的组件依赖于 Autofac。我更喜欢更松散的耦合,但这似乎不是一个选择。有没有办法询问(在构造函数参数中,或使用属性注入,或其他任何东西!)Autofac 给我在构造函数中对容器的引用?或者,有没有更简洁的方法让 Autofac 为我提供可以解决任何问题的神奇服务定位器对象?
【问题讨论】:
-
看看组件在做什么“魔法”会很有趣。也许除了服务定位器模式之外还有其他方法。你能更新一些代码吗?
-
我可以很好地描述它。当消息通过总线进入时,代码使用一些元数据确定消息的类型,然后构造所述类型。然后它需要使用 Autofac 找到
IConsume<type>的所有实现者(其中type是元数据中的类型),然后对其调用 Consume 方法。 -
你的意思是:kozmic.pl/2010/03/11/…
-
是的,但很少有转化为 Autofac。
标签: c# dependency-injection inversion-of-control autofac