Атрибут метода С# не может содержать выражение Lambda?
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 жалуется здесь публичное использование() { }
}
Код >
Ответы
Ответ 1
Да, это правильно. Значения атрибутов ограничены константами следующих типов
- Простые типы (bool, byte, char, short, int, long, float и double)
- строка
- System.Type
- перечислений
- object (Аргумент параметра атрибута объекта типа должен быть постоянным значением одного из указанных выше типов.)
- Одномерные массивы любого из указанных типов
Ссылка: http://msdn.microsoft.com/en-us/library/aa288454(VS.71).aspx