2 Stimmen

Wie kann ich MVC-Aktionsinformationen aus der MethodInfo der Aktion erhalten?

Wenn meine Anwendung initialisiert wird, möchte ich ein Register aller MVC-Aktionen erstellen, deren Methode ein bestimmtes CustomAttribute aufweist. Ich möchte, dass dieses Register die MVC-Bereich, Controller und Aktion verfolgt. Ich könnte verlangen, dass die Person, die das Attribut hinzufügt, diese Informationen angibt, aber es scheint, als ob ich diese Informationen basierend auf der MethodInfo herausfinden sollte: im Grunde das Gegenteil dessen, was passiert, wenn die ActionLink-Methode aufgerufen wird. Wie kann ich das tun?

4voto

Jan Jongboom Punkte 25470

Durchsuchen Sie die Assembly nach jedem Controller und suchen Sie dann alle Methoden, um diejenigen mit einem bestimmten Attribut zu finden.

// aktuelle Assembly -> alle Typen, die den Basistyp Controller haben -> Methoden abrufen
foreach (var typ in System.Reflection.Assembly.GetCallingAssembly().GetTypes().Where(t =>
    typeof(Controller).IsAssignableFrom(t)))
{
    foreach (var methodInfo in typ.GetMethods())
    {
        if (methodInfo.GetCustomAttributes(typeof(MyAttribute), false).Count() > 0)
        {
            var aktion = methodInfo.Name;
            var controller = typ.Name;
        }
    }
}

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