Подтвердить что ты не робот

Атрибут метода С# не может содержать выражение 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 жалуется здесь   публичное использование()   {   } } Код >
4b9b3361

Ответ 1

Да, это правильно. Значения атрибутов ограничены константами следующих типов

  • Простые типы (bool, byte, char, short, int, long, float и double)
  • строка
  • System.Type
  • перечислений
  • object (Аргумент параметра атрибута объекта типа должен быть постоянным значением одного из указанных выше типов.)
  • Одномерные массивы любого из указанных типов

Ссылка: http://msdn.microsoft.com/en-us/library/aa288454(VS.71).aspx