C# 如何使用DI在属性中设置实例。ASP.NET vNext
我有下一个代码:C# 如何使用DI在属性中设置实例。ASP.NET vNext,c#,.net,asp.net-mvc,asp.net-core,C#,.net,Asp.net Mvc,Asp.net Core,我有下一个代码: public class BasicAuthenticationAttribute : ActionFilterAttribute { public BasicAuthenticationAttribute() { var appEnvironment = CallContextServiceLocator.Locator.ServiceProvider.GetService(typeof(IApplicationEnvironment)) a
public class BasicAuthenticationAttribute : ActionFilterAttribute
{
public BasicAuthenticationAttribute()
{
var appEnvironment = CallContextServiceLocator.Locator.ServiceProvider.GetService(typeof(IApplicationEnvironment)) as IApplicationEnvironment;
IConfiguration configuration = new ConfigurationBuilder()
.SetBasePath(appEnvironment.ApplicationBasePath)
.AddJsonFile("config.json").Build();
UserName = configuration["UserName"];
Password = configuration["UserPassword"];
}
}
public class PagesController : Controller
{
[HttpGet("settings")]
[BasicAuthentication] // I use it there
public IActionResult Settings()
{
...
}
}
这是basicAuth的属性。
我需要将“iconfigurationconfiguration
”注入到我的构造函数中,以读取config json
如何将IConfiguration设置到属性中?可能存在类似于CallContextServiceLocator.Locator.ServiceProvider的服务,但用于IConfiguration
PS我知道属性值必须是常量,因此您将无法传入类的实例。要在属性类中使用此属性,请执行以下操作:
[FromServices]
public IConfiguration Configuration { get; set; }
它必须是公共的,并且有getter和setter,它将自动从DI获得服务。是的,你是对的。我们可以使用DI容器获取实例吗?