Атрибуты в 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 {}
Когда использовать атрибуты
- Для указания метаданных компилятору.
- Для управления сериализацией объектов.
- Для взаимодействия с внешними библиотеками.
- Для настройки поведения классов и методов в рефлексии.
Атрибуты позволяют улучшить читаемость кода, добавляя метаданные и управляющие инструкции без изменения основной логики программы.