Я читаю об атрибутах и понимаю, что они могут быть применены к различным целевым объектам с вашим кодом - (см. Цели атрибутов ).
Итак, глядя на файл AssemblyInfo.cs в моем проекте, я вижу следующее:
[assembly: AssemblyTitle("AttributesDemo")]
[assembly: AssemblyDescription("")]
Что имеет смысл для меня. Атрибут, целью которого является сборка.
В своем коде я могу добавить атрибут в класс следующим образом:
[MyAttribute]
class MySerialzableClass
{
С MyAttribute
, являющимся:
[AttributeUsage (AttributeTargets.All)]
public class MyAttribute : System.Attribute
{
}
Итак, я подумал о выражении assembly:
в первом блоке кода. И попробовал это, просто для экспериментов:
[class: MyAttribute]
class MySerialzableClass
{
Это дает предупреждение компилятору:
'class' не является распознанным атрибутом
место нахождения. Все атрибуты в этом блоке
будут игнорироваться.
Итак, мой вопрос заключается в следующем: почему нужно указывать цель атрибутов для некоторых атрибутов и не требуются или не разрешены для других? Кроме того, для каких из них вы должны это сделать?