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

Did*_*xis 23 c# lambda attributes

IntelliSense告诉我"Expression不能包含匿名方法或lambda表达式".真?我不知道这个强加的限制.它是否正确?我想我正在寻找一个健全检查......


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()
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

Jar*_*Par 28

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

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

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

  • 谢谢.那真是太可惜了. (6认同)