gpt4 book ai didi

c# - 为 IHostingEnvironment 使用自定义名称

转载 作者:行者123 更新时间:2023-11-30 21:44:38 27 4
gpt4 key购买 nike

我们正在运行 ASP.NET Core 并热切地使用 IHostingEnvironment。

由于我们组织中的约定,我们的环境名称与默认 IHostingEnvironment 实现的环境名称不匹配。

为了解决这个问题,我们制作了以下扩展方法:

public static class HostingEnvironmentExtensions
{
public static bool IsProd(this IHostingEnvironment env) => env.IsEnvironment("prod");

public static bool IsTest(this IHostingEnvironment env) => env.IsEnvironment("test");
}

这工作正常,但感觉有点危险,因为 IsProductionIsStaging 的默认方法现在无法按您期望的方式工作。

处理环境名称不同于 ASP.NET Core 默认值的正确方法是什么?

最佳答案

您可以通过创建自己的实现来解决这个问题。我创建了自己的 IWorkingEnvironment 界面,如下所示:

public interface IWorkingEnvironment
{
string EnvironmentName { get; set; }
}

还有我自己的“已知”环境名称:

public static class EnvironmentNames
{
public static readonly string Local = nameof(Local);

public static readonly string Dev = nameof(Dev);

public static readonly string Test = nameof(Test);

public static readonly string Prod = nameof(Prod);
}

后面是IWorkingEnvironment 的扩展方法:

public static class WorkingEnvironmentExtensions
{
public static bool IsLocal(this IWorkingEnvironment environment)
{
return environment.EnvironmentName == EnvironmentNames.Local;
}

public static bool IsDev(this IWorkingEnvironment environment)
{
return environment.EnvironmentName == EnvironmentNames.Dev;
}

// etc...
}

然后我使用 ASP.NET IHostingEnvironment 实现 IWorkingEnvironment:

public class AspNetWorkingEnvironment : IWorkingEnvironment
{
private readonly IHostingEnvironment _hostingEnvironment;

public AspNetWorkingEnvironment(IHostingEnvironment hostingEnvironment)
{
_hostingEnvironment = hostingEnvironment;
}

public string EnvironmentName => _hostingEnvironment.EnvironmentName;
}

现在我们所要做的就是在我们的依赖注入(inject)容器中将 AspNetWorkingEnvironment 注册为 IWorkingEnvironment 的实现(使用单例生命周期):

public void ConfigureServices(IServiceCollection services)
{
services.AddSingleton<IWorkingEnvironment, AspNetWorkingEnvironment>();

// etc...
}

关于c# - 为 IHostingEnvironment 使用自定义名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40721007/

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