Ich brauche Method für Verfahren in Aktion delegieren, um zu überprüfen, genannt zu bekommen, ob in Aktion aufgerufen Methoden MyCustomAttibuteAktion Delegierter. Wie man Methodeninfos erhält, die im Delegierten genannt werden?
public void Foo(Action action)
{
if(Attribute.GetCustomAttributes(action.Method, typeof(MyCustomAttribute)).Count() == 0)
{
throw new ArgumentException("Invalid action");
}
}
Die Foo-Methode sollte in der Lage ist, wie folgt aufgerufen werden:
Foo(() =>
{
instanceOfFooClass.Method1().Method2();
});
In Foo-Methode möchte ich sicher sein, dass Methode1 und Methode2 MyCustomAttribute hat. Jedoch gibt action.Method mir die MethodInfo, die die Aktion des Delegaten ist, was passiert, wenn Lambda-Ausdruck verwendet wird. Gibt es eine Möglichkeit Method1 und Method2 MethodInfo zu erhalten?
Ausgezeichnete Frage. Nicht sehr leicht, AFAIK. Sie könnten * wahrscheinlich * es einfach mit einem 'Ausdruck' machen, aber dann können Sie es nicht * direkt * ausführen –
Ich stimme zu, dass Sie Ausdrucksbäume dafür verwenden müssen. Ich weiß nicht, wie sehr es die Leistung beeinträchtigen wird. –
Wenn nicht direkt, wie könnten Sie es dann ausführen? – Joanna