首页 > 解决方案 > 为每个浏览器选项卡添加单例

问题描述

我正在尝试实现 Web 应用程序并使用单例对象,这样我就可以注入它以在其他类中使用它。每次用户在浏览器中打开选项卡或类似内容时,我都想打开一个新对象。例如:

public class Singleton
{
    public string Id{get;set;}
    public Singleton(){Id=Guid.NewGuid().ToString();)
}

in startup:
services.AddSingleton<Singleton>(s=>new Singleton());

在其他一些类中:

public class OtherClass{
    private readonly Singleton singleton;
    public OtherClass(Singleton singleton)
    {
        this.singleton = singleton;
    }
}

问题是每个选项卡都有相同的 ID...我需要为浏览器中的每个选项卡设置不同的 ID...

谢谢!

标签: c#asp.net-core.net-core

解决方案


您必须为要成为单例的类创建一个接口。您将其注册Startup.cs为单身人士

public void ConfigureServices(IServiceCollection services)
{
     services.AddSingleton<ISingleton, Singleton>();
}

然后您继续将单例接口注入OtherClass

public class OtherClass{
private readonly Singleton singleton;
public OtherClass(ISingleton singleton)
{
    this.singleton = singleton;
}

希望这可以帮助


推荐阅读