Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在C#中向Lambda函数添加属性?_C#_Lambda_Custom Attributes - Fatal编程技术网

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

如何在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

我在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表达式添加一个属性吗?

不幸的是,这还不可能。你必须用“旧方法”创建一个带有该属性的
委托
方法来实现这一点。不过,正如所指出的,这可能会出现在下一版本的C#中

[MyAttr]
private void MyCallback(object o)
{
}
事实上,这个问题在这里已经有了答案:

我会补充一点,C 7的特征请求的一部分就是这样的:我们应该考虑增加对LAMBDASA的属性的支持。