Методы расширения (Extension Methods)

понедельник, 10 августа 2009, Alexander Honcharuk

Очень часто бывают случаи, когда для работы с классом, к которому нет доступа к коду, не хватает какого-то метода. В таких случаях надо создавать метод, в который надо передавать объект этого самого класса, для подальшей обработки и возвращения результата. Или, как вариант, можно наследоваться от этого класса. Но комманда разработчиков платформы .NET облегчает нам жизнь[;)]. С выходом версии C# 3.0, появлась возможность расширения языка, без расширения платформы .NET. Эта функциональность называется методы расширения. Методы расширения позволяют "добавлять" методы в существующие типы без создания нового производного типа, перекомпиляции или иного изменения исходного типа.

Следующий пример кода демонстрирует использование метода расширения.

using System;
using TestExtendedClass.ExtensionMethods; 

namespace TestExtendedClass
{
    class Program
    {
        static void Main(string[] args)
        {
            "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 будет вывод:

Hello world  
2009            
0,08             
Очень удобный способ вывода в консольный поток данных[:)].

В случае реализации методов расширения для какого-либо типа необходимо помнить о следующих двух фактах.

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

  • Методы расширения добавляются в область действия на уровне пространства имен. Например, при наличии нескольких статических классов, которые содержат методы расширения в единственном пространстве имен с названием Extensions, все они будут добавлены в область действия директивной using Extensions;

Более детальную инфу можно почитать тут.

Компании из статьи


Microsoft Украина


Сайт:
http://www.microsoft.com/ukr/ua/

Microsoft Украина Украинское подразделение компании Microsoft.

Ищите нас в интернетах!

Комментарии

Свежие вакансии