L'Injection de dépendance dans les attributs

Je suis en train d'injecter une dépendance dans un personnalisé AuthorizeAttribute comme suit:

public class UserCanAccessArea : AuthorizeAttribute
{
    readonly IPermissionService permissionService;

    public UserCanAccessArea() :
        this(DependencyResolver.Current.GetService<IPermissionService>()) { }

    public UserCanAccessArea(IPermissionService permissionService)
    {
        this.permissionService = permissionService;
    }

    protected override bool AuthorizeCore(HttpContextBase httpContext)
    {
        string AreaID =
            httpContext.Request.RequestContext.RouteData.Values["AreaID"] as string;

        bool isAuthorized = false;

        if (base.AuthorizeCore(httpContext))
            isAuthorized = permissionService.UserCanAccessArea(AreaID, httpContext.User);

        return isAuthorized;
    }
}

Cela fonctionne, mais semble être le résoudre comme un singleton sens-je obtenir les problèmes décrits dans mon perméable à la question

Ce que je voudrais faire est d'utiliser la propriété d'injection, mais que mon Attribut lui-même n'est pas résolu par l'Unité, je suis incapable de trouver un moyen de configurer le conteneur de les intercepter et de les résoudre d'une propriété. J'ai essayé ce qui suit:

public class UserCanAccessArea : AuthorizeAttribute
{
    public IPermissionService permissionService { get; set; }

    protected override bool AuthorizeCore(HttpContextBase httpContext)
    {
        string AreaID =
            httpContext.Request.RequestContext.RouteData.Values["AreaID"] as string;

        bool isAuthorized = false;

        if (base.AuthorizeCore(httpContext))
            isAuthorized = permissionService.UserCanAccessArea(AreaID, httpContext.User);

        return isAuthorized;
    }
}

Conteneur:

container.RegisterType<UserCanAccessArea>(new InjectionProperty("permissionService"));

Mais la propriété est toujours nulle au moment de l'exécution.

Quelqu'un a réalisé cela et si oui avez-vous un exemple?

InformationsquelleAutor James | 2015-04-28