我正在使用 MvcContrib 进行 Spring.Net ASP.Net MVC 控制器依赖项注入。
我的依赖项没有被注入到我的 CustomAttribute 操作过滤器中。
如何将我的依赖项放入其中?
假设您有一个 ActionFilter,如下所示:
public class CustomAttribute : ActionFilterAttribute, ICustomAttribute
{
private IAwesomeService awesomeService;
public CustomAttribute(){}
public CustomAttribute(IAwesomeService awesomeService)
{
this.awesomeService= awesomeService;
}
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
//Do some work
}
}
Spring.Net 配置部分如下所示:
<object id="CustomAttribute " type="Assembly.CustomAttribute , Assembly" singleton="false">
<constructor-arg ref="AwesomeService"/>
</object>
您可以像这样使用该属性:
[Custom]
public FooController : Controller
{
//Do some work
}
这里最困难的部分是 ActionFilters 似乎会随着每个请求而被实例化,并且在 Spring 感知之外的上下文中。我在 ActionFilter 构造函数中使用 Spring“ContextRegistry”类处理了相同的情况。不幸的是,它将 Spring 特定的 API 用法引入到您的代码中,如果可能的话,这是一个应该避免的好习惯。
这是我的构造函数的样子:
public MyAttribute()
{
CustomHelper = ContextRegistry.GetContext().GetObject("CustomHelper") as IConfigHelper;
}
请记住,如果要加载多个 Spring 上下文,则需要在 GetContext(...) 方法中指定所需的上下文。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)