Собственный класс атрибута в C#
Класс атрибута объявляют как обычный класс с базой Attribute. В конструктор передают данные, которые пометка должна запомнить.
Компилятор проверяет, что аргументы в квадратных скобках подходят конструктору. При запуске пометка сама ничего не печатает и не меняет поля объекта.
Объявим атрибут владельца и пометим им класс накладной. Печатается свойство объекта, а не текст пометки. Строка "billing" лежит только в пометке и здесь не выводится:
Invoice doc = new Invoice { Amount = 120 };
Console.WriteLine(doc.Amount); // выведет 120
[Owner("billing")]
class Invoice
{
public int Amount { get; set; }
}
class OwnerAttribute : Attribute
{
public OwnerAttribute(string team) => Team = team;
public string Team { get; }
}
Пометьте класс Shipment строкой dept, создайте объект с total 90 и выведите total.