Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用DI在属性中设置实例。ASP.NET vNext_C#_.net_Asp.net Mvc_Asp.net Core - Fatal编程技术网

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容器获取实例吗?