在 ActionFilter 中实现 Unity MVC 5 依赖注入

Implement Unity MVC 5 dependency injection in ActionFilter

我正在尝试通过 Unity (mvc5) 在 actionfilter 中注入此用户服务,但它为空。我该如何实施?

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

    // other members
}

您必须先将 UnityFilterAttributeFilterProvider 注册为 FilterProvider

修改App_Start>UnityMvcActivator的启动方法如下:

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));
}

如果找不到方法。您可能安装了错误或过时的软件包。考虑在包管理器控制台上安装 Install-Package Unity.Mvc