Ответы - CodeHelperСписок последних 15 ответов на вопрос с сайта CodeHelperuuid:a8a58a1d-2ce9-4a23-9c96-18031996e384;id=2272012-09-25T11:08:04Zuuid:a8a58a1d-2ce9-4a23-9c96-18031996e384;id=228Самые полезные варианты использования Extension Methods (C#)2009-11-27T07:21:43-06:002009-11-27T07:21:43-06:00Чак НоррисExtension Methods — это по сути просто «синтаксический сахар», но его использование в некоторых случаях может сильно облегчить жизнь программисту. Известны ли кому-нибудь сценарии полезногоuuid:a8a58a1d-2ce9-4a23-9c96-18031996e384;id=229Ответ от admax на вопрос с сайта CodeHelper2009-11-27T07:26:48-06:002009-11-27T07:26:48-06:00admaxИнтересный способ форматирования строки. Extension: public static string FormatWith(this string target, params object[] args) { return string.Format(CultureInfo.CurrentCulture, target, args); } Этот extension позволяет удобнее форматировать строки: var formatted = "This {0} template foruuid:a8a58a1d-2ce9-4a23-9c96-18031996e384;id=230Ответ от admax на вопрос с сайта CodeHelper2009-11-27T07:33:22-06:002009-11-27T07:33:22-06:00admaxКогда нужно привести объект к какому-то типу только чтобы вызвать один метод, очень раздражает синтаксис cast`а — слишком много скобочек приходится набирать и конструкция не очень читабельна: ((SomeType) target).DoWork(); В этом случае спасет такой простой extension: public static T As<T>(thisuuid:a8a58a1d-2ce9-4a23-9c96-18031996e384;id=231Ответ от Чак Норрис на вопрос с сайта CodeHelper2009-11-27T08:13:36-06:002009-11-27T08:13:36-06:00Чак НоррисЕсли определить extensions для примитивных типов double, int и тд то можно интересно работать с единицами измерения и конвертацией: var результатВМетрах = 5.Метров() + 7.Километров() + 18.Сантиметров(); PS Я не любитель называть методы русскими словами, просто так показалось нагляднее)uuid:a8a58a1d-2ce9-4a23-9c96-18031996e384;id=232Ответ от safonovea на вопрос с сайта CodeHelper2009-11-27T08:44:23-06:002009-11-27T08:44:23-06:00safonoveaЕще один вариант для System.String. У String есть перегруженные методы TrimEnd() и TrimEnd(Char[]), позволяющий удалить все пробелы или символы, перечисленные в массиве. Но в случае, если необходимо удалить упорядоченную последовательность символов (читай строку) эти методы не работают. Предлагаетсяuuid:a8a58a1d-2ce9-4a23-9c96-18031996e384;id=233Ответ от Чак Норрис на вопрос с сайта CodeHelper2009-11-27T08:46:58-06:002009-11-27T08:46:58-06:00Чак НоррисВот несколько extension`ов из Mono.Rocks : Повторение действия несколько раз: 6.Times (i => Console.WriteLine (i)); Удобная реализация циклов for с инкрементом и декрементом: 6.UpTo (12, i => Console.WriteLine (i)); 12.DownTo (6, i => Console.WriteLine (i)); А вот цикл Step спервого взглядаuuid:a8a58a1d-2ce9-4a23-9c96-18031996e384;id=234Ответ от admax на вопрос с сайта CodeHelper2009-12-01T02:23:44-06:002009-12-01T02:23:44-06:00admaxЕсли определить текстовые константы для тегов и атрибутов HTML и несколько extension-методов, которые работают с классом TagBuilder , то можно получить систему написания HTML-структур в fluent-манере. Это особенно удобно применять в helper`ах ASP.NET MVC: return Html.Tag.Imguuid:a8a58a1d-2ce9-4a23-9c96-18031996e384;id=235Ответ от alex.algel на вопрос с сайта CodeHelper2009-12-08T03:39:50-06:002009-12-08T03:39:50-06:00alex.algelЕсть сайт, созданный специально для того что бы собрать в одном месте различные Extension methods. Находится тут: http://www.extensionmethod.net/