在 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
。
我正在尝试通过 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
。