依赖注入 – Asp.Net Core中的属性注入

我正在尝试将asp.net应用程序移植到asp.net核心.我在我的UnitOfWork实现上有属性注入(使用ninject).
[Inject]
public IOrderRepository OrderRepository { get; set; }
[Inject]
public ICustomerRepository CustomerRepository { get; set; }

有没有办法在.net核心上使用DI构建来实现相同的功能?是否可以使用基于约定的绑定?

不,内置的DI / IoC容器在使用和功能方面都有意保持简单,为其他DI容器插件提供了基础.

因此,没有内置支持自动发现,自动注册,装饰器或注入器,或基于约定的注册.据我所知,目前还没有计划将其添加到内置容器中.

您必须使用具有属性注入支持的第三方容器.

请注意,在98%的场景中,属性注入被认为是错误的,因为它隐藏了依赖关系,并且无法保证在创建类时将注入对象.

使用构造函数注入,您可以通过构造函数强制执行此操作并检查null,而不是创建类的实例.使用属性注入这是不可能的,并且在单元测试期间,当它们未在构造函数中定义时,类不需要哪些服务/依赖项,因此很容易错过并获得NullReferenceExceptions.

我发现属性注入的唯一正当理由是将服务注入到由第三方库生成的代理类中,即从您无法控制对象创建的接口创建的WCF代理.

在其他地方避免它.

相关文章

本文将从上往下,循序渐进的介绍一系列相关.NET的概念,先从...
基于 .NET 的一个全新的、好用的 PHP SDK + Runtime: Pe...
.NET 异步工作原理介绍。
引子 .NET 6 开始初步引入 PGO。PGO 即 Profile Guided Opti...
前言 2021/4/8 .NET 6 Preview 3 发布,这个版本的改进大多来...
前言 开头防杠:.NET 的基础库、语言、运行时团队从来都是相...