Что такое extension methods? Это возможность расширить функционал имеющегося класса добавив в него свой статичный метод. Вот простой пример, который в тоже время остается для меня очень полезным.
Что делает данный код? Он расширяет все классы реализующие интерфейс IList методом ListToString, который позволяет получить перечисление элементов списка через запятую в виде строки. Для расширения функционала стандартного интерфейса всего-то и нужно теперь подключить пространство имен SampleNS. (Комментарий: благодаря весьма полезному замечанию easyman, пример переписан с использованием класса StringBuilder)
Вот пример использования:
Этот пример получит в _list список названий всех продуктов, а затем присвоит строку с перечислением названий через запятую переменной result.
PS: перенес из персонального блога
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: перенес из персонального блога