如何从annonymus委托获取属性

时间:2017-04-11 10:22:56

标签: c#

我正在尝试从使用参数的委托中获取自定义属性。

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

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

只要我不在委托中使用参数,这就可以正常工作:

() => MyFunction(1);
提前谢谢。

1 个答案:

答案 0 :(得分:1)

如果您将() => MyFunction(1);传递给Function方法,例如

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

你自然不会获得任何属性,因为() => MyFunction(1);是一个lambda函数,因此没有属性。

我认为MyFunction确实有属性。因此,为了获得它们,您需要更改(或创建一个重载)Function方法的签名

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

以便您可以传递MyFunction

Function(MyFunction);