Как создать собственный (кастомный) атрибут в C#?

Создайте класс-наследник System.Attribute, задайте допустимые места применения через AttributeUsage и объявите параметры через конструктор или свойства.

Короткий ответ

Что ответить на собеседовании

Создайте класс-наследник System.Attribute, задайте допустимые места применения через AttributeUsage и объявите параметры через конструктор или свойства.

Подробный разбор

Ответ с пояснениями

Создайте класс-наследник System.Attribute, задайте допустимые места применения через AttributeUsage и объявите параметры через конструктор или свойства.

[AttributeUsage(AttributeTargets.Class, AllowMultiple = false)]
public sealed class FeatureAttribute : Attribute
{
    public string Name { get; }
    public FeatureAttribute(string name) => Name = name;
}

[Feature("reports")]
public class ReportService { }

Понадобится using System. Суффикс Attribute в использовании можно опустить. Атрибут хранит метаданные; сам по себе он не включает функцию и не меняет выполнение класса. Его должен прочитать фреймворк, рефлексия, анализатор или генератор кода. Типы аргументов атрибутов ограничены правилами C#.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее