AutoFac Injection into属性

时间:2015-09-16 17:21:23

标签: dependency-injection autofac

所以我需要在我正在使用的授权属性中注入许多不同的服务。为简单起见,我将留下这个以显示配置管理器。

public class FeatureAuthorizeAttribute : AuthorizeAttribute
{
    public IConfigurationManager ConfigurationManager;

    private readonly string _feature;
    public FeatureAuthorizeAttribute(string feature)
    {
        _feature = feature;

        var test  = ConfigurationManager.GetCdnPath();
    }
}

将使用以下内容

[FeatureAuthorize("Admin")]

我尝试过使用构造函数注入

public FeatureAuthorizeAttribute(string feature, IConfigurationManager configurationManager)
{
   ConfigurationManager = configurationManager;
   _feature = feature
}

然而,当我尝试

时,这只会导致错误
[FeatureAuthorize("Admin", IConfigurationManager)]

首先,这似乎是错误的做法。我假设我需要在容器中注册我的自定义授权属性以使其开始接收

1 个答案:

答案 0 :(得分:10)

创建Passive Attributes,而不是尝试将依赖注入与属性一起使用(您不能以任何合理,有用的方式执行)。

具体来说,在这种情况下,假设这是一个ASP.NET MVC场景,您无法从AuthorizeAttribute派生。相反,您应该让授权服务查找您的自定义属性,并实施IAuthorizationFilter。然后将过滤器添加到应用程序的配置中。

可在此答案中找到更多详细信息:https://stackoverflow.com/a/7194467/126014