Атрибут метода C # не может содержать лямбда-выражение? - PullRequest
23 голосов
/ 10 декабря 2010

IntelliSense говорит мне: «Выражение не может содержать анонимные методы или лямбда-выражения».В самом деле?Я не знал об этом наложенном ограничении.Это правильно?Полагаю, я ищу здесь проверку работоспособности ...

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

1 Ответ

28 голосов
/ 10 декабря 2010

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...