c# - .Register 和 .RegisterType 是否等效(对于具有无参数构造函数的类)?

标签 c# dependency-injection autofac

使用 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/

相关文章:

c# - 无法通过 C# oledb 将记录插入 MS Access

c# - 在哪些情况下应该使用某些类型的 IoC 框架

asp.net-web-api - Web API 中的每个请求 DependencyResolver

c# - 是否有用于 WinForm 的 Autofac 集成库

c# - 解决条件依赖 autofac

java - 在 Java 中反序列化/解析 JSON

c# - C#中的UDP套接字?

c# - .NET 4.7.x 中的 .NET 反射比 3.5 慢 3 倍

java - Dagger 2 : error while getting a multiple instances of same object with @Named

c# - 如何从 .NET Core 3.1 中的 DI 获取 SignalR IHubContext?