5 мая 2008

С# extension methods: простой, но полезный пример

.NET
Что такое extension methods? Это возможность расширить функционал имеющегося класса добавив в него свой статичный метод. Вот простой пример, который в тоже время остается для меня очень полезным.
namespace SampleNS
{
public static class CommonUtil
{
    public static string ListToString(this IList list)
    {
        StringBuilder result = new StringBuilder("");
        
        if (list.Count > 0)
        {
            result.Append(list[0].ToString());
            for (int i = 1; i < list.Count; i++)
                result.AppendFormat(", {0}", list[i].ToString());                
        }
        return result.ToString();
    }
}
}


Что делает данный код? Он расширяет все классы реализующие интерфейс IList методом ListToString, который позволяет получить перечисление элементов списка через запятую в виде строки. Для расширения функционала стандартного интерфейса всего-то и нужно теперь подключить пространство имен SampleNS. (Комментарий: благодаря весьма полезному замечанию easyman, пример переписан с использованием класса StringBuilder)

Вот пример использования:
    var _list = DataContextORM.ExecuteQuery<string>("Select name from products").ToList();
    string result = _list.ListToString();


Этот пример получит в _list список названий всех продуктов, а затем присвоит строку с перечислением названий через запятую переменной result.

PS: перенес из персонального блога
Теги:C sharpextension methods
Хабы: .NET
+20
35,6k 39
Комментарии 90
Реклама
Лучшие публикации за сутки

Рекомендуем