gpt4 book ai didi

asp.net-mvc - 是否可以在 ASP.NET MVC FilterAttribute 上使用依赖注入(inject)/IoC?

转载 作者:行者123 更新时间:2023-12-02 07:52:36 25 4
gpt4 key购买 nike

我有一个简单的自定义 FilterAttribute,我用它装饰各种 ActionMethods

例如。

[AcceptVerbs(HttpVerbs.Get)]
[MyCustomFilter]
public ActionResult Bar(...)
{ ... }

现在,我希望向此 CustomFilter 操作添加一些日志记录。作为一个好 child ,我正在使用 DI/IoC ...因此希望将此模式用于我的自定义 FilterAttribute

所以如果我有以下...

ILoggingService

并希望将此添加到我的自定义 FilterAttribute .. 我不确定如何添加。比如,我很容易做到以下几点......

public class MyCustomFilterAttribute : FilterAttribute
{
public MyCustomFilterAttribute(ILoggingService loggingService)
{ ... }
}

但是编译器错误地说装饰我的 ActionMethod 的属性(上面列出...)需要 1 个 arg ..所以我只是不确定该怎么做:(

最佳答案

我已经使用 Ninject 进行了属性注入(inject)和 Ninject.Web.MVC .

只要你从 Ninject.Web.MVC 得到 Controller 工厂,就很简单了。

例如

public class EventExistsAttribute : FilterAttribute, IActionFilter
{
[Inject]
public IEventRepository EventRepo { private get; set; }

public void OnActionExecuting(ActionExecutingContext filterContext)
{
//Do stuff
}

public void OnActionExecuted(ActionExecutedContext filterContext)
{
//Do something else if you so wish...
}
}

它的缺点是本质上具有“隐藏”依赖性,可以这么说……但是您对此无能为力。

HTH,
查尔斯

关于asp.net-mvc - 是否可以在 ASP.NET MVC FilterAttribute 上使用依赖注入(inject)/IoC?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2808137/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com