如何在C#中为Lambda函数添加属性?

时间:2016-02-29 14:21:06

标签: c# lambda custom-attributes

我在C#中有自定义属性:MyAttr。 我有一个方法,希望委托作为参数。

我现在将lambda表达式传递给该方法:

SomeMethod((object o) => { DoSomething(); });

DoSomething()方法使用relfection来获取有关调用方法的信息(在本例中为lambda表达式)。但它无法找到所需的信息,因为lambda表达式没有属性: - (

我想要做的是以下之一:

// This does not work:
SomeMethod([MyAttr](object o) => { DoSomething(); });
// Thos does not work, too:
SomeMethod((object o) => [MyAttr] { DoSomething(); });

是否可以将属性放入lambda表达式?

1 个答案:

答案 0 :(得分:3)

不幸的是,这还不可能。通过使用该属性创建delegate方法,您将不得不采用这种方式#34;正如xanatos指出的那样,这可能是在下一版本的C#中。

[MyAttr]
private void MyCallback(object o)
{
}

实际上,这个问题已经有了答案: Custom attribute on parameter of an anonymous lambda