C# 如何在Blazor@InjectClassName classObject中这样的“普通”c类中使用/注入服务

C# 如何在Blazor@InjectClassName classObject中这样的“普通”c类中使用/注入服务,c#,class,service,blazor,inject,C#,Class,Service,Blazor,Inject,我有一个Blazor项目,在Startup.cs中我添加了一个服务 public void ConfigureServices(IServiceCollection services) { .... services.AddSingleton<Models.UserVisit>(); } UserVisit是文件夹模型中的一个普通C.cs类 我不知道的是,在一个普通的C类中,如何使用这个u

我有一个Blazor项目,在Startup.cs中我添加了一个服务

        public void ConfigureServices(IServiceCollection services)
        {
           ....
            services.AddSingleton<Models.UserVisit>();
        }
UserVisit是文件夹模型中的一个普通C.cs类

我不知道的是,在一个普通的C类中,如何使用这个userVisitObj,而这个C类没有一个我将使用@inject的razorpage

在同一个项目中,如果没有blazor/razor组件,如何在这里使用普通C类:

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
    }
}

我希望我能把我的问题说清楚一点,请客气一点,我还是个初学者。

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

private readonly Models.UserVisit _userVisitObj
public UserModel(Models.UserVisit userVisitObj)
{
      _userVisitObj = userVisitObj;
 
}
注意,这适用于普通的C类

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

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

希望这有帮助…

您可以按如下方式使用构造函数注入:

private readonly Models.UserVisit _userVisitObj
public UserModel(Models.UserVisit userVisitObj)
{
      _userVisitObj = userVisitObj;
 
}
注意,这适用于普通的C类

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

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

希望这有助于……

一般来说,您只需遵循。因此,在您的情况下,UserModel构造函数将接受Models.UserVisit作为参数。但是如何解决这一问题取决于如何/在何处构建UserModel类,通常您只需遵循。因此,在您的情况下,UserModel构造函数将接受Models.UserVisit作为参数。但是如何解决这个问题取决于如何/在何处构造UserModel类