IntelliSense говорит мне: "Выражение не может содержать анонимные методы или лямбда-выражения". В самом деле? Я не знал об этом наложенном ограничении. Это верно? Наверное, я ищу проверку на разумность...
<Предварительно > <Код > public delegate bool Bar (строка s); [AttributeUsage (AttributeTargets.All)] public class Foo: Атрибут { публичный читальный бар; общественный Foo (Bar bar) { this.bar = bar; } } public class Использование { [Foo (b = > b == "Hello World!" )]//IntelliSense жалуется здесь публичное использование() { } } Код >Атрибут метода С# не может содержать выражение Lambda?
Ответ 1
Да, это правильно. Значения атрибутов ограничены константами следующих типов
- Простые типы (bool, byte, char, short, int, long, float и double)
- строка
- System.Type
- перечислений
- object (Аргумент параметра атрибута объекта типа должен быть постоянным значением одного из указанных выше типов.)
- Одномерные массивы любого из указанных типов
Ссылка: http://msdn.microsoft.com/en-us/library/aa288454(VS.71).aspx