Что такое атрибуты в C#

Атрибуты в C# позволяют добавлять метаданные к классам, методам, свойствам и другим элементам кода. Они используются для передачи информации компилятору или среде выполнения.

Основы атрибутов

Атрибуты представляют собой классы, унаследованные от System.Attribute. Они применяются в квадратных скобках [] перед объявлением элемента.

Пример использования атрибута Obsolete:

using System;

class Program
{
    [Obsolete("Этот метод устарел, используйте NewMethod")]  
    static void OldMethod()
    {
        Console.WriteLine("Старый метод");
    }

    static void NewMethod()
    {
        Console.WriteLine("Новый метод");
    }

    static void Main()
    {
        OldMethod(); // Выдаст предупреждение компилятора
        NewMethod();
    }
}

Встроенные атрибуты

Obsolete

Помечает элемент как устаревший.

[Obsolete("Используйте новый метод")] 
void OldMethod() {}

Serializable

Позволяет сериализовать объект.

[Serializable]
class MyClass {}

DllImport

Используется для работы с неуправляемым кодом.

using System.Runtime.InteropServices;

[DllImport("user32.dll")]
static extern int MessageBox(IntPtr hWnd, string text, string caption, uint type);

Создание собственных атрибутов

Можно создать свой атрибут, унаследовав его от System.Attribute:

using System;

[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)]
class MyAttribute : Attribute
{
    public string Info { get; }
    public MyAttribute(string info) => Info = info;
}

[MyAttribute("Пример атрибута")]
class Example {}

Когда использовать атрибуты

  • Для указания метаданных компилятору.
  • Для управления сериализацией объектов.
  • Для взаимодействия с внешними библиотеками.
  • Для настройки поведения классов и методов в рефлексии.

Атрибуты позволяют улучшить читаемость кода, добавляя метаданные и управляющие инструкции без изменения основной логики программы.