【问题标题】:How to add an Attribute to Lambda function in C#? [duplicate]如何在 C# 中向 Lambda 函数添​​加属性? [复制]
【发布时间】:2016-02-29 14:21:05
【问题描述】:

我在 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# lambda custom-attributes


    【解决方案1】:

    不幸的是,这还不可能。您将不得不通过使用该属性创建一个 delegate 方法来使用“旧方式”。正如xanatos 指出的那样,这可能会出现在下一个 C# 版本中。

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

    其实这个问题在这里已经有了答案: Custom attribute on parameter of an anonymous lambda

    【讨论】:

    • 我将添加 C# 7.0 的功能请求的一部分正是这样:github.com/dotnet/roslyn/issues/117 我们应该考虑添加对在 lambdas 上放置属性的支持
    • 这有点可惜。还是谢谢你...
    猜你喜欢
    • 2018-07-06
    • 2017-08-26
    • 2017-07-02
    • 1970-01-01
    • 2020-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多