gpt4 book ai didi

c# - 如何在 .Net Core 2.0 中创建应用程序变量?

转载 作者:太空宇宙 更新时间:2023-11-03 12:15:35 24 4
gpt4 key购买 nike

我使用 .Net Core 2.0 创建了网站.现在我想存储一些不是用户特定的值,我想让这些值在所有登录的用户之间共享。为此我可以使用 Application Variable .但是在.Net Core 2.0没有内置的方法来实现这一点。

我尝试过的

我创建了一个类,如下所示。

public class ApplicationLevelData
{
public Guid TestProperty { get; set; }

public ApplicationLevelData()
{
TestProperty = Guid.NewGuid(); // this data will comes from database (only once)
}
}

在那之后Startup.cs ConfigureServices 下的文件我在下面写的方法。

services.AddSingleton<ApplicationLevelData>();

并且在每个Controller我需要按如下方式注入(inject)该服务。

私有(private)的ApplicationLevelData _appData;

public HomeController(ApplicationLevelData appData)
{
_appData = appData;
}

然后我们可以在整个 Controller 中使用它.

但是,我不想要这个Inject事物。我们可以使用 HttpContext 提供应用程序数据吗? ?

任何人都可以建议我如何创建 Application variable 的方式吗?在 .Net Core 2.0

如有任何帮助,我们将不胜感激。

谢谢。

最佳答案

了解不想注入(inject)背后的原因,您仍然可以使用单例并使用以下方法从 HttpContext 访问值:

HttpContext.RequestServices.GetService<ApplicationLevelData>();

要使用此功能,您必须导入 Microsoft.Extensions.DependencyInjection

如果你愿意,你也可以为此创建一个扩展函数:

public static class HttpContextExtensions {
public static ApplicationLevelData GetAppData(this HttpContext HttpContext)
=> HttpContext.RequestServices.GetService<ApplicationLevelData>();
}

您现在可以使用 HttpContext.GetAppData() 在任何 Controller 中获取您的 ApplicationLevelData

关于c# - 如何在 .Net Core 2.0 中创建应用程序变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49913943/

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