2017-04-11 91 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