【发布时间】:2010-06-10 16:08:00
【问题描述】:
有没有办法使用 IoC、MEF [Imports] 或其他 DI 解决方案在对象创建时而不是在组合时动态组合依赖项?
这是我目前的想法。如果您有一个引发事件的对象实例,但您没有创建一次对象并将其保存在内存中,则每次创建对象时都必须注册事件处理程序。据我所知,大多数 IoC 容器都要求您注册组合中使用的所有类并调用 Compose() 以使其连接所有依赖项。
由于对象创建、依赖注入等的开销,我认为这可能是可怕的设计(我在这里处理的是遗留系统)......但我想知道是否可以使用其中之一新兴的 IoC 技术。
也许我混淆了一些术语,但我的目标是避免编写一个框架来“挂钩”对象实例上的所有事件,并使用类似 MEF 的东西来[导出]遵守的处理程序(依赖项)到一个非常特定的接口并将它们 [ImportMany] 导入到一个对象实例中,因此如果应用程序启动时程序集在那里,我的导出会被调用。所以也许所有对象在应用程序启动时仍然可以组合,但我希望系统在创建和销毁对象时找到并调用所有对象。
【问题讨论】:
标签: .net dependency-injection ioc-container mef