2017-04-11 81 views
0

我想從使用參數的委託獲取自定義屬性。提前如何從annonymus委託獲取屬性

() => MyFunction(1); 

THX:

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

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

,這個只要我不以委託使用的參數,如工作正常。

回答

1

如果你傳遞() => MyFunction(1);Function方法,如

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

你自然不會得到任何屬性,() => MyFunction(1);是一個lambda函數,因此沒有任何屬性。

我認爲MyFunction確實有屬性。因此,爲了得到它們,你需要改變(或創建一個過載)的Function方法的簽名

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

,讓你可以通過它MyFunction

Function(MyFunction); 
+0

或者他可以簡單'功能(委託方法)' – xanatos

+0

不是真的,@xanatos – m1kael