Как добавить ActionFilter в не MVC-проект? - PullRequest
2 голосов
/ 13 мая 2011

У меня есть несколько проектов, написанных на 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 к определению метода или класса, и 2 вышеупомянутых вызова произойдут автоматически:

[AttributeLogsRequest]
public class MyController
{
    ...
}

Мой вопрос: есть ли что-то еще, кроме ActionFilterAttribute, IActionFilter , который я могу использовать для создания не MVC-зависимых фильтров для моего кода? ActionFilterAttribute, IActionFilter предоставляет информацию, которая очень ориентирована на MVC, такую ​​как ControllerName, Action, HttpContext и т. Д. Должен быть более простой способ создания простого фильтра для сквозных задач.

TIA

1 Ответ

2 голосов
/ 28 июля 2011

Похоже, вам нужна библиотека AOP для этого.

Их там много. Вы можете попробовать 1 из следующих:

PostSharp

Пружина AOP

Внедрение политики Unity

...