有没有使用IoC,MEF [Imports]或另一个DI解决方案在对象创建时而不是在组合时间期间编写依赖关系的方法?IoC - 对象实例的动态组合
这是我目前的想法。如果您有一个引发事件的对象实例,但您没有创建对象并将其保存在内存中,则每次创建对象时都必须注册事件处理程序。据我所知,大多数IoC容器都要求你注册组合中使用的所有类,并调用Compose()来使它挂钩所有的依赖关系。
我认为这可能是一个可怕的设计(我正在处理一个遗留系统)这样做是因为对象创建,依赖注入等的开销......但我想知道是否有可能使用一个突发的IoC技术。
也许我有一些术语混合起来,但我的目标是避免写了一个框架对象的实例为“钩出来的事件”,并使用类似MEF为[出口]处理程序(依赖),其坚持一个非常具体的接口和[ImportMany]他们到一个对象实例,所以我的出口被调用,如果应用程序启动时程序集在那里。所以也许所有的对象仍然可以在应用程序启动时组成,但我希望系统在创建和销毁对象时查找并调用所有对象。
一些DI容器也支持为您生成工厂。你可以注射例如Func -delegate。 DI容器然后为IWidget实例生成一个工厂。 例如在Autofac中:http://nblumhardt.com/2010/01/the-relationship-zoo/ –
Gamlor
2010-06-13 21:53:30
我很好奇,您是否需要将此工厂注入想要在第一个对象中创建对象的类地点?或者这是否需要实例化? – stuartmclark 2013-02-06 13:58:52
@stuartmclark:你注入工厂。这就是为什么它是'IWidgetFactory'而不是某种具体类型。几个IoC容器实际上能够自动生成工厂,所以你甚至不需要上述类型,你可以注入'Func'或'Lazy '。 –
Aaronaught
2013-02-07 01:15:58