如何将ActionFilter添加到非MVC项目?

时间:2011-05-13 15:59:35

标签: .net-4.0 action-filter

我有几个用 f / x4.0 编写的不是 MVC的项目。没有涉及网络。实际上,一个是Windows服务,另一个是用于Win Forms或命令行处理的一组库。现在,在MVC3中,您可以执行以下操作:

using System;
using System.Collections.Generic;
using System.Web.Mvc;

namespace RivWorks.FeedHandler.Library
{
    class AttributeLogsRequest : ActionFilterAttribute, IActionFilter
    {
        void IActionFilter.OnActionExecuted(ActionExecutedContext filterContext)
        {
            // do something here...
        }

        void IActionFilter.OnActionExecuting(ActionExecutingContext filterContext)
        {
            // do something here...
        }
    }
}

现在您要做的就是将ActionFilter添加到Method或Class定义中,上述2个调用将自动发生:

[AttributeLogsRequest]
public class MyController
{
    ...
}

我的问题是:除了 ActionFilterAttribute,IActionFilter 还有什么可以用来为我的代码创建非MVC相关的过滤器吗? ActionFilterAttribute,IActionFilter 提供非常以MVC为中心的信息,如ControllerName,Action,HttpContext等。这必须是一种更简单的方法来创建一个简单的过滤器来解决这些问题。

TIA

1 个答案:

答案 0 :(得分:2)

看起来你需要一些AOP库才能做到这一点。

那里有很多人。您可以尝试以下其中一项:

PostSharp

Spring AOP

Unity Policy Injection