Asp.net mvc 5 在ActionFilter中实现Unity MVC 5依赖项注入

Asp.net mvc 5 在ActionFilter中实现Unity MVC 5依赖项注入,asp.net-mvc-5,unity-container,actionfilterattribute,Asp.net Mvc 5,Unity Container,Actionfilterattribute,我试图通过Unity(mvc5)在actionfilter中注入此用户服务,但它是空的。我如何实现这一点 public class TestFilter : ActionFilterAttribute { // this is always null [Dependency] public IUserService UserService { get; set; } // other members } 您必须首先将UnityFilterAttributeFi

我试图通过Unity(mvc5)在actionfilter中注入此用户服务,但它是空的。我如何实现这一点

public class TestFilter : ActionFilterAttribute
{
    // this is always null
    [Dependency]
    public IUserService UserService { get; set; }

    // other members
}

您必须首先将
UnityFilterAttributeFilterProvider
注册为
FilterProvider

修改
应用程序的启动方法,如下所示:

public static void Start()
{
    var container = UnityConfig.GetConfiguredContainer();

    FilterProviders.Providers.Remove(FilterProviders.Providers.OfType<FilterAttributeFilterProvider>().First());
    FilterProviders.Providers.Add(new UnityFilterAttributeFilterProvider(container));

    DependencyResolver.SetResolver(new UnityDependencyResolver(container));

    Microsoft.Web.Infrastructure.DynamicModuleHelper.DynamicModuleUtility.RegisterModule(typeof(UnityPerRequestHttpModule));
}
publicstaticvoidstart()
{
var container=UnityConfig.GetConfiguredContainer();
FilterProviders.Providers.Remove(FilterProviders.Providers.OfType().First());
FilterProviders.Providers.Add(新UnityFilterAttributeFilterProvider(容器));
SetResolver(新UnitedDependencyResolver(容器));
Microsoft.Web.Infrastructure.DynamicModuleHelper.DynamicModuleUtility.RegisterModule(typeof(UnityPerRequestHttpModule));
}

如果你找不到方法。您可能安装了错误或过期的软件包。考虑在包管理器控制台上安装<代码>安装包Unity .MVC < /代码> .< /p>您是否在<代码>过滤器提供商< /代码>上注册了代码> UnyTyfFieldFieldServices < /代码>?嗨,山姆,不,我没有,我怎么能这样做?这里有一个类似的问题,可能对您有帮助。