我在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表达式?
答案 0 :(得分:3)
不幸的是,这还不可能。通过使用该属性创建delegate
方法,您将不得不采用这种方式#34;正如xanatos指出的那样,这可能是在下一版本的C#中。
[MyAttr]
private void MyCallback(object o)
{
}
实际上,这个问题已经有了答案: Custom attribute on parameter of an anonymous lambda