我正在尝试从使用参数的委托中获取自定义属性。
[SomeCustomAttribute]
private void MyFunction(int i){ ... }
void Function(Action method){
foreach (var attribute in method.Method.GetCustomAttributes(false))
{
if (attribute is SomeCustomAttribute)
{ ... }
}
}
只要我不在委托中使用参数,这就可以正常工作:
() => MyFunction(1);
提前谢谢。
答案 0 :(得分:1)
如果您将() => MyFunction(1);
传递给Function
方法,例如
Function(() => MyFunction(1));
你自然不会获得任何属性,因为() => MyFunction(1);
是一个lambda函数,因此没有属性。
我认为MyFunction
确实有属性。因此,为了获得它们,您需要更改(或创建一个重载)Function
方法的签名
void Function(Action<int> method) {
...
以便您可以传递MyFunction
Function(MyFunction);