Что означает «свойство» для этого атрибута? - PullRequest
0 голосов
/ 18 января 2019
[property: Obsolete]
static int X
{
    get { return 42; }
}

В приведенном выше коде для какой цели используется слово «свойство»? Код, кажется, работает так же, если я заменю [свойство: устаревшее] на [устаревшее]. И хотя «свойство» в Visual Studio окрашено в синий цвет, оно не отображается в списке ключевых слов C #: https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/

Ответы [ 2 ]

0 голосов
/ 18 января 2019

Это целевая спецификация атрибута .

В вашем коде его использование на самом деле не является необходимым, поскольку в этом месте есть только одна разрешенная цель для этого атрибута. Атрибут Obsolete может быть помещен в тип, метод или свойство, но если он размещен в свойстве, то разрешен только (property) только целевой спецификатор *1006*.

Наиболее практичным использованием для этого является спецификатор цели assembly, где вы можете установить конфигурацию сборки через атрибуты:

[assembly: AssemblyProduct("Foo bar")]

Вы можете установить разрешенные цели для своих пользовательских атрибутов, используя AttributeUsage.

0 голосов
/ 18 января 2019

Спецификация Attribute определяет это как attribute target.

В определенных контекстах допускается задание атрибута для нескольких целей.Программа может явно указать цель путем включения атрибута attribute_target_specifier.Когда атрибут размещается на глобальном уровне, требуется global_attribute_target_specifier.Во всех других местах применяется разумное значение по умолчанию, но атрибут attribute_target_specifier может использоваться для подтверждения или отмены значения по умолчанию в определенных неоднозначных случаях (или просто для подтверждения значения по умолчанию в не неоднозначных случаях).

В нем также говорится, что во многих случаях, например, в упомянутом вами, это разрешено, но не обязательно.

В других контекстах включение атрибута attribute_target_specifier разрешено, но не нужно.Например, объявление класса может включать или не указывать тип спецификатора.

...