gpt4 book ai didi

asp.net-core - ASP.NET Core 中的单例允许多个实例

转载 作者:行者123 更新时间:2023-12-02 02:33:24 25 4
gpt4 key购买 nike

我实现了非常简单的代码来检查 ASP.NET Core 2.1 中依赖注入(inject)的功能。

不幸的是,我得到了我预期的其他结果。每次,当我刷新网站时,我都会得到另一个 id,而不是相同的 id。

启动.cs

public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
services.AddSingleton<IPerson, Person>();
}

HomeController.cs

public class HomeController : Controller
{
private IPerson _person;

public HomeController( IPerson person)
{
_person = person;
}

public ViewResult Index()
{
return View( "Index", $"{_person.id}");
}
}

Person.cs

public interface IPerson
{
string id { get; }
}

public class Person : IPerson
{
public string id => Guid.NewGuid().ToString();
}

我怀疑,原因很简单,但真的不明白我做错了什么。

最佳答案

我认为问题在于您如何在 Person 类上定义 Id 属性:

public class Person : IPerson
{
public string id => Guid.NewGuid().ToString();
}

这意味着:每次代码请求id时 - 它都会得到一个新创建的 Guid - 所以当然你会不断获得新的/每次你看自己的人时都会有不同的Guid!

您需要在 Person 构造函数中一次获取id,然后返回该值:

public class Person : IPerson
{
private string _id;

public void Person()
{
_id = Guid.NewGuid().ToString();
}

public string id => _id;
}

非常确定一旦您完成了此操作,单例就会起作用 - 每次您查看它时都会得到相同的 Person 实例。

关于asp.net-core - ASP.NET Core 中的单例允许多个实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64715173/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com