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