2017-04-11 1 views
0

Ich versuche, ein benutzerdefiniertes Attribut von einem Delegaten, der Parameter verwendet.Wie bekomme ich Attribute von Annonymus Delegat

[SomeCustomAttribute] 
private void MyFunction(int i){ ... } 

void Function(Action method){ 
     foreach (var attribute in method.Method.GetCustomAttributes(false)) 
     { 
      if (attribute is SomeCustomAttribute) 
      { ... } 
     } 
} 

das funktioniert gut, solange ich wie in den Delegaten verwenden Parameter nicht:

() => MyFunction(1); 

Thx im Voraus.

Antwort

1

Wenn Sie () => MyFunction(1); zum Function Methode vorbei sind, wie in

Function(() => MyFunction(1)); 

Sie werden natürlich keine Attribute erhalten, wie () => MyFunction(1); ist eine Lambda-Funktion und als solche nicht Attribute haben.

Ich nehme an, MyFunction hat Attribut (e). Also, um sie zu erhalten, müssen Sie ändern (oder eine Überlastung erstellen) die Unterschrift des Function Methode

void Function(Action<int> method) { 
... 

, so dass Sie es MyFunction

Function(MyFunction); 
+0

passieren könnte oder er konnte einfach 'Funktion (Delegate Methode)' – xanatos

+0

Nicht wirklich, @xanatos – m1kael

Verwandte Themen