2017-04-11 28 views
0

パラメータを使用するデリゲートからカスタム属性を取得しようとしています。annonymusデリゲートから属性を取得する方法

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

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

これは限り私が好きなデリゲートのパラメータを使用していけないと正常に動作します:事前に

() => MyFunction(1); 

Thxを。

答えて

1

あなたが() => MyFunction(1);として、

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

にあなたは自然に任意の属性を取得することはありませんよう、Function方法に() => MyFunction(1);を渡している場合は、ラムダ関数であり、そのような属性を持っていません。

MyFunctionには属性があるとします。だから、それらを得るために、あなたはそれをMyFunction

Function(MyFunction); 
+0

を渡すことができるか、彼ができるように

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

Functionメソッドのシグネチャを変更する必要がある(または過負荷を作成します)よ単純に 'Function(delegate method)' – xanatos

+0

本当に@xanatos – m1kael

関連する問題