我有下一个代码:
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的属性。
我需要在构造函数中注入“IConfiguration configuration
”,以读取config json。
如何将IConfiguration导入我的属性?可能有像CallContextServiceLocator.Locator.ServiceProvider
这样的服务,但对于IConfiguration
PS我明白属性值必须是常量
答案 0 :(得分:0)
Attribute values must be constants,因此您将无法传入类的实例。
答案 1 :(得分:0)
要在属性类中使用它:
[FromServices]
public IConfiguration Configuration { get; set; }
它必须是公共的并且具有getter和setter,它将自动从DI获得服务。