Методы расширения (Extension Methods)
Очень часто бывают случаи, когда для работы с классом, к которому нет доступа к коду, не хватает какого-то метода. В таких случаях надо создавать метод, в который надо передавать объект этого самого класса, для подальшей обработки и возвращения результата. Или, как вариант, можно наследоваться от этого класса. Но комманда разработчиков платформы .NET облегчает нам жизнь[;)]. С выходом версии C# 3.0, появлась возможность расширения языка, без расширения платформы .NET. Эта функциональность называется методы расширения. Методы расширения позволяют "добавлять" методы в существующие типы без создания нового производного типа, перекомпиляции или иного изменения исходного типа.
Следующий пример кода демонстрирует использование метода расширения.
using System;
using TestExtendedClass.ExtensionMethods;
namespace TestExtendedClass
{
class Program
{
static void
{
"Hello world".Print();
2009.Print();
0.08.Print();
}
}
namespace ExtensionMethods
{
public static class MyExtensions
{
public static void Print(this object obj)
{
Console.WriteLine(obj.ToString());
}
}
}
}
Результатом выполенения функции Main будет вывод:
В случае реализации методов расширения для какого-либо типа необходимо помнить о следующих двух фактах.
-
Метод расширения никогда не будет вызван, если он имеет ту же самую подпись, что и метод, определенный в типе.
-
Методы расширения добавляются в область действия на уровне пространства имен. Например, при наличии нескольких статических классов, которые содержат методы расширения в единственном пространстве имен с названием Extensions, все они будут добавлены в область действия директивной using Extensions;
Более детальную инфу можно почитать тут.
Компании из статьи
Microsoft Украина | Украинское подразделение компании Microsoft. |