【发布时间】:2009-07-09 05:00:09
【问题描述】:
我知道一些 DI 框架支持这一点(例如 Ninject),但我特别想知道 Autofac 是否有可能。
我希望能够向 Autofac 容器请求具体类,并返回一个注入了所有适当构造函数依赖项的实例,无需注册该具体类。即,如果我从不绑定它显式地,然后自动将具体类绑定到自身,就好像我调用了builder.Register<MyClass>();
ViewModels 是一个很好的例子。在 MVVM 中,分层是这样的,即只有 View 依赖于 ViewModel,并且通过松散的类型来实现,并且无论如何您都不会对 View 进行单元测试。所以没有必要模拟 ViewModel 进行测试——因此没有理由为每个 ViewModel 提供一个接口。所以在这种情况下,通常的 DI 模式“注册这个接口来解析这个类”是不必要的复杂性。像builder.Register<MyClass>(); 这样的显式自绑定在处理像具体类这样简单的事情时也感觉是不必要的步骤。
我知道 Autofac 文档中的 reflection-based registration example,但这也不符合我的口味。我不希望提前注册每个可能的课程的复杂性(和缓慢性);我希望框架在我需要的时候给我我需要的东西。约定优于配置,等等。
有什么方法可以配置 Autofac,让它可以说“哦,这是一个具体的类型,还没有人注册它,所以我就让它像使用默认设置注册一样”?
【问题讨论】:
标签: dependency-injection autofac convention-over-configur