autofac mvc3属性注入

时间:2011-08-15 22:34:29

标签: visual-studio-2010 asp.net-mvc-3 dependency-injection autofac

我在asp.net mvc3项目上工作。我正在使用autofac进行DI。 我有一个属性Say

public class MustBeLoggedInAttribute : ActionFilterAttribute
{
    private IUserContext Context {get;set;}

    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
         if (!Context.IsLoggedIn)
             filterContext.Result = new RedirectResult("/users/logon");  
         base.OnActionExecuting(filterContext);
    }

}

所以我需要将依赖IUserContext注入此属性。 我怎么会得到它。我在actionfiterprovider上找到了代码, 但是找不到任何完整的东西。

帮助将不胜感激。

此致

成员Parminder

1 个答案:

答案 0 :(得分:2)

来自Alex Meyer-Gleaves关于Autofac维基的文章:http://code.google.com/p/autofac/wiki/Mvc3Integration#Filter_Attribute_Property_Injection

您需要调用RegisterFilterProvider()扩展名方法:

using Autofac.Integration.Mvc;

var builder = new ContainerBuilder();
builder.RegisterFilterProvider();

这将根据需要将属性注入过滤器属性(据我所知,您不需要使用Autofac注册属性类型,以便工作。)

希望这有帮助,

尼克