嗨,我在 MVC 3 应用程序中使用MS Unity Container 。
我想使用 setter 注入来为 Action 过滤器注入依赖项。我有一个动作过滤器,我在 global.asax 中注册,这个动作过滤器调用一个存储库类来加载一些数据。我想使用 DI 注入具体类。使用 StructureMap可以很容易地实现它。但不知何故,我无法让它与 Unity 一起使用。我已经尝试了此链接中的所有解决方案。
这是我的代码:
MyActionFilter.cs
public class GlobalViewBagActionFilter : ActionFilterAttribute
{
public IUserRepo UserRepo { get; set; }
public override void OnResultExecuting(ResultExecutingContext filterContext)
{
var testVal = UserRepo.LoadData();
}
}
在 Global.asax.cs 中注册动作过滤器
private static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new GlobalViewBagActionFilter());
}
在 Appliation_Start 上调用上述方法进行注册
RegisterGlobalFilters(GlobalFilters.Filters);
我已经尝试了许多可能的代码块来注册课程,但没有任何效果。要么我会得到一个异常,要么在操作过滤器上,UserRepo 属性将为空。
关于如何让它工作的任何指示?