如何在 C# 中向 Lambda 函数添加属性?
How to add an Attribute to Lambda function in C#?
我在 C# 中有一个自定义属性:MyAttr
。
我有一个方法需要委托作为参数。
我现在将 lambda 表达式传递给该方法:
SomeMethod((object o) => { DoSomething(); });
DoSomething()
方法使用 relection 获取有关调用方法(在本例中为 lambda 表达式)的信息。但是它找不到所需的信息,因为 lambda 表达式没有属性:-(
我想做的是以下其中一项:
// This does not work:
SomeMethod([MyAttr](object o) => { DoSomething(); });
// Thos does not work, too:
SomeMethod((object o) => [MyAttr] { DoSomething(); });
是否可以将属性放入 lambda 表达式?
不幸的是,这还不可能。您必须通过使用该属性创建 delegate
方法来实现 "old way"。正如 xanatos 指出的那样,这可能会出现在下一版本的 C# 中。
[MyAttr]
private void MyCallback(object o)
{
}
其实这个问题在这里已经有了答案:
Custom attribute on parameter of an anonymous lambda
我在 C# 中有一个自定义属性:MyAttr
。
我有一个方法需要委托作为参数。
我现在将 lambda 表达式传递给该方法:
SomeMethod((object o) => { DoSomething(); });
DoSomething()
方法使用 relection 获取有关调用方法(在本例中为 lambda 表达式)的信息。但是它找不到所需的信息,因为 lambda 表达式没有属性:-(
我想做的是以下其中一项:
// This does not work:
SomeMethod([MyAttr](object o) => { DoSomething(); });
// Thos does not work, too:
SomeMethod((object o) => [MyAttr] { DoSomething(); });
是否可以将属性放入 lambda 表达式?
不幸的是,这还不可能。您必须通过使用该属性创建 delegate
方法来实现 "old way"。正如 xanatos 指出的那样,这可能会出现在下一版本的 C# 中。
[MyAttr]
private void MyCallback(object o)
{
}
其实这个问题在这里已经有了答案: Custom attribute on parameter of an anonymous lambda