Ответ
Метод расширения позволяет добавлять новые методы к существующим типам, не изменяя их исходный код и не используя наследование. Это достигается за счет статического класса и специального синтаксиса параметра.
Шаги для создания:
- Объявите статический класс.
- Объявите статический метод.
- Первый параметр метода укажите с ключевым словом
this, за которым следует тип, который вы хотите расширить.
Пример: расширение для типа string
namespace MyExtensions
{
public static class StringExtensions
{
public static string Reverse(this string input)
{
if (string.IsNullOrEmpty(input))
return input;
char[] charArray = input.ToCharArray();
Array.Reverse(charArray);
return new string(charArray);
}
}
}
Использование:
using MyExtensions; // Не забудьте добавить using для пространства имен
string original = "Hello";
string reversed = original.Reverse(); // Вызов метода расширения
Console.WriteLine(reversed); // Выведет: "olleH"
Важные ограничения и best practices:
- Методы расширения не могут переопределять существующие методы экземпляра — приоритет всегда у «родного» метода типа.
- Они работают только с public-членами расширяемого типа.
- Нельзя создавать методы расширения для статических классов.
- Размещайте методы расширения в отдельном пространстве имен для удобного подключения.
- Используйте их умеренно, чтобы не «загрязнять» IntelliSense и не нарушать ясность кода.