C# 方法属性不能包含 Lambda 表达式?

C# Method Attribute cannot contain a Lambda Expression?(C# 方法属性不能包含 Lambda 表达式?)
本文介绍了C# 方法属性不能包含 Lambda 表达式?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

IntelliSense 告诉我表达式不能包含匿名方法或 lambda 表达式."真的吗?我不知道这种强加的限制.这个对吗?我想我在这里寻找健全性检查......

IntelliSense is telling me "Expression cannot contain anonymous methods or lambda expressions." Really? I was not aware of this imposed limitation. Is this correct? I guess I'm looking for a sanity check here...


public delegate bool Bar(string s);

[AttributeUsage(AttributeTargets.All)]
public class Foo : Attribute
{
    public readonly Bar bar;

    public Foo(Bar bar)
    {
        this.bar = bar;
    }
}

public class Usage
{
    [Foo(b => b == "Hello World!")]        // IntelliSense Complains here
    public Usage()
    {
    }
}

推荐答案

是的,这是正确的.属性值仅限于以下类型的常量

Yes this is correct. Attribute values are limited to constants of the following types

  • 简单类型(bool、byte、char、short、int、long、float 和 double)
  • 字符串
  • 系统类型
  • 枚举
  • object(object类型的属性参数的参数必须是上述类型之一的常量值.)
  • 上述任何类型的一维数组

参考:http://msdn.microsoft.com/zh-cn/library/aa288454(VS.71).aspx

这篇关于C# 方法属性不能包含 Lambda 表达式?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

How to pass lambda #39;include#39; with multiple levels in Entity Framework Core?(如何在 Entity Framework Core 中传递具有多个级别的 lambda include?)
Join/Where with LINQ and Lambda(使用 LINQ 和 Lambda 加入/在哪里)
Getting all types that implement an interface(获取所有实现接口的类型)
Combining two expressions (Expressionlt;Funclt;T, boolgt;gt;)(组合两个表达式 (ExpressionFuncT, boolgt;))
Is there a reason for C##39;s reuse of the variable in a foreach?(C# 在 foreach 中重用变量是否有原因?)
Lambda/Linq with Contains criteria for multiple keywords(Lambda/LINQ WITH包含多个关键字的条件)