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

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() { } } 

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

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

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