Я поклонник методов расширения в C#, но не имел успеха, добавляя метод расширения к статическому классу, например, к консоли.Могу ли я добавить методы расширения к существующему статическому классу?
Например, если я хочу, чтобы добавить расширение к консоли, под названием «WriteBlueLine», так что я могу пойти:
Console.WriteBlueLine("This text is blue");
Я попытался это путем добавления локального, общественного статический метод, с консолью, как «этот» параметр ... но не кости!
public static class Helpers {
public static void WriteBlueLine(this Console c, string text)
{
Console.ForegroundColor = ConsoleColor.Blue;
Console.WriteLine(text);
Console.ResetColor();
}
}
Это не добавило метод «WriteBlueLine» в Console ... я делаю это неправильно? Или просить невозможного?
О, хорошо. несчастный, но я думаю, что пройду. Я ВСЕГДА использую метод расширения virgin (в любом случае в производственном коде). Может быть, когда-нибудь, если мне повезет. – 2008-11-21 17:25:45
Я написал несколько расширений HtmlHelper для ASP.NET MVC. Написал один для DateTime, чтобы дать мне конец данной даты (23: 59.59). Полезно, когда вы просите пользователя указать дату окончания, но действительно хотите, чтобы это было в конце этого дня. – tvanfosson 2008-11-21 18:25:47
Невозможно добавить их в настоящее время, потому что функция не существует в C#. Не потому, что это невозможно _per se_, а потому, что C# peeps очень заняты, в основном заинтересованы в методах расширения, чтобы заставить LINQ работать и не видели достаточной выгоды в статических методах расширения, чтобы оправдать время, которое они должны были выполнить. [Эрик Липперт объясняет здесь] (http://stackoverflow.com/a/4914207/230390). – 2012-10-31 09:54:26