ASP.NET 核心 1 依赖项注入:实现类型始终为 null

本文关键字:类型 实现 null 注入 核心 NET 依赖 ASP | 更新日期: 2023-09-27 18:32:57

我在Startup类的ConfigureServices方法中有以下内容。我正在添加ToastNotification的单例实例,它是IToastNotification的实现。

public void ConfigureServices(IServiceCollection services)
{
   services.AddInstance<IToastNotification>(new ToastNotification()
         {
         });
}

问题是,当我在此方法结束时调试时观察服务的值时,IToastNotification服务的实现类型是null。因此,当我尝试从控制器中的服务集合中获取 Toastnotification 实例时,它始终为 null。

这就是我使用依赖注入获得Toastnotification的方式

[FromServices]
private IToastNotification ToastNotification { get; set; }

我做错了什么?

ASP.NET 核心 1 依赖项注入:实现类型始终为 null

不要使用属性注入,它已被删除,在未来版本中不起作用:https://github.com/aspnet/Announcements/issues/115。

相反,请考虑使用构造函数依赖项注入。

使用构造函数依赖注入,您可以执行以下操作:

// Register your service.
services.AddInstance<IToastNotification>(new ToastNotification());

在您的控制器中:

public class HomeController : Controller
{
    private readonly IToastNotification _toastNotification;
    public HomeController(IToastNotification toastNotification)
    {
        _toastNotification = toastNotification;
    }
    ...
}