如何在“普通”c# 类中使用/注入服务,例如 Blazor @inject ClassName classObject

问题描述 投票:0回答:2

我有一个 Blazor 项目,在 Program.cs(正式名称为 Startup.cs)中我添加了一个服务

            builder.Services.AddSingleton<Models.UserVisit>();
        

我可以在 razor/blazor 页面上使用/访问该服务,如下所示:

       @inject Models.UserVisit userVisitObj

(UserVisit 是 Models 文件夹中的“普通”C# .cs 类)

我不知道的是如何在没有 razorpage 的普通 C# 类中使用这个“userVisitObj”(我将在其中使用 @inject)?

我如何在这里使用它(同一项目中的普通 C# 类,但没有 blazor/razor-componentpage):

public class UserModel
{
    [BsonId]
    public Guid Id { get; set; }
    public CultureInfo UserCultureInfo { get; set; }
    ...

    public UserModel()
    {
        [Inject]
        Models.UserVisit userVisitObj;   // THAT DOESN'T WORK -- ERROR
    }
}

我希望我能把我的问题说清楚(请友善,我还是个初学者)。

c# class service blazor inject
2个回答
17
投票

您可以使用构造函数注入,如下所示:

private readonly Models.UserVisit _userVisitObj
public UserModel(Models.UserVisit userVisitObj)
{
      _userVisitObj = userVisitObj;
 
}

请注意,这适用于普通的 C# 类。

如果您的类是组件类,则需要使用 Inject 属性 公共财产,例如:

[Inject]
public Models.UserVisit UserVisit {get; set;}

希望这有帮助...


0
投票

如果在许多方法中使用构造函数,是否有另一种方法可以在不修改常规 C# 类中的构造函数参数的情况下注入服务?

在此输入图片描述

© www.soinside.com 2019 - 2024. All rights reserved.