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