我们为我们的项目调查 DI 容器。现在我们在 Autofac 和 Castle Windsor 之间进行选择。有一点对我们来说非常重要:Autofac 的强类型注册。
例子:
public interface ITestAutofac
{
}
public class NotDerivedFrom
{
}
对于温莎,我可以写这样的东西-
var cont = new WindsorContainer();
cont.Register(Component
.For<ITestAutofac>().ImplementedBy<NotDerivedFrom>());
它会在编译时失败。Resharper 可以很容易地在这方面提供帮助。
对于 Autofac,我可以这样写 -
builder.Register(c => new NotDerivedFrom()).As<ITestAutofac>();
var form = container.Resolve<ICustomForm>();
它会在运行时失败。
如何通过编译时检查在 Autofac 中注册类型?