如何在C#中向Lambda函数添加属性?
我在C#中有一个自定义属性:如何在C#中向Lambda函数添加属性?,c#,lambda,custom-attributes,C#,Lambda,Custom Attributes,我在C#中有一个自定义属性:MyAttr。 我有一个方法,它需要一个委托作为参数 现在,我将lambda表达式传递给该方法: SomeMethod((object o) => { DoSomething(); }); DoSomething()方法使用relfection来获取有关调用方法的信息(在本例中为lambda表达式)。但是它找不到所需的信息,因为lambda表达式没有属性:-( 我想做的是以下之一: // This does not work: SomeMethod([MyAt
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表达式添加一个属性吗?不幸的是,这还不可能。你必须用“旧方法”创建一个带有该属性的
委托
方法来实现这一点。不过,正如所指出的,这可能会出现在下一版本的C#中
[MyAttr]
private void MyCallback(object o)
{
}
事实上,这个问题在这里已经有了答案:
我会补充一点,C 7的特征请求的一部分就是这样的:我们应该考虑增加对LAMBDASA的属性的支持。