使用 AutoFac 时,您可以使用 .RegisterType
将类与接口(interface)相关联,但您也可以使用 .Register
(它允许您通过一个 lambda)。
对于具有无参数构造函数的类,这两种方法是否等效?
var builder = new Autofac.ContainerBuilder();
builder.RegisterType<MyClass>().As<IMyInterface>();
builder.Register(x => new MyClass()).As<IMyInterface>();
是否有任何场景可以使用 .RegisterType
?
最佳答案
假设您的类只有一个定义的构造函数,它们在功能上应该是等价的。
一个内部差异是 RegisterType
将使用反射来确定要使用的构造函数,而使用 lambda 的 Register
已提供所有需要的信息。
关于c# - .Register 和 .RegisterType 是否等效(对于具有无参数构造函数的类)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13682955/