2 Stimmen

Wie man einen ActionFilter zu einem nicht MVC-Projekt hinzufügen?

Ich habe mehrere Projekte, die in f/x4.0 die sind no MVC. Kein Web involviert. In der Tat ist eine ein Windows-Dienst, eine andere ist eine Reihe von Bibliotheken für entweder Win Forms oder Befehlszeilenverarbeitung verwendet. Nun, in MVC3 können Sie etwas tun, wie:

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...
        }
    }
}

Jetzt müssen Sie nur noch einen ActionFilter zu einer Methoden- oder Klassendefinition hinzufügen, und die beiden oben genannten Aufrufe erfolgen automatisch:

[AttributeLogsRequest]
public class MyController
{
    ...
}

Meine Frage ist: Gibt es noch etwas anderes als ActionFilterAttribut, IActionFilter Ich kann verwenden, um nicht-MVC-abhängige Filter für meinen Code zu erstellen? ActionFilterAttribut, IActionFilter liefert Informationen, die sehr MVC-zentrisch sind, wie ControllerName, Action, HttpContext usw. Es muss einen einfacheren Weg geben, um einen einfachen Filter für übergreifende Belange zu erstellen.

TIA

2voto

Van Thoai Nguyen Punkte 956

Sieht aus, als bräuchten Sie eine AOP-Bibliothek, um dies zu tun.

Es gibt viele von ihnen da draußen. Sie können 1 der folgenden ausprobieren:

PostSharp

Frühling AOP

Unity Policy Injection

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X