Вопросы с тегом 'extension-methods'

Метод расширения - это языковая особенность некоторых языков, таких как Swift, Visual Basic.NET и С#. Методы расширения позволяют вам "добавлять" методы к существующим типам, не создавая новый производный тип, не перекомпилируя или иным образом не изменяя исходный тип.
6

Имеет ли С# свойства расширения?

Имеет ли С# свойства расширения? Например, можно ли добавить свойство расширения в DateTimeFormatInfo, называемое ShortDateLongTimeFormat, которое вернет ShortDatePattern + " " + LongTimePattern?
06 мар. '09 в 14:30
17

Отличный() с лямбдой?

Правильно, поэтому у меня есть перечисляемый и желаю получить от него отличные значения. Используя System.Linq, конечно, существует метод расширения, называемый Distinct. В простом случае его можно использовать без параметров, например: var distin...
19 авг. '09 в 13:50
8

Какой метод работает лучше:.Any() vs .Count()> 0?

в пространстве имен System.Linq, теперь мы можем расширить наш IEnumerable, чтобы иметь методы расширения Any() и Count(). Недавно мне сказали, что если я хочу проверить, что коллекция содержит 1 или более элементов внутри, я должен использовать ме...
20 нояб. '08 в 12:11
150

Каковы ваши любимые методы расширения для С#? (Codeplex.com/extensionoverflow)

Позвольте составить список ответов, в которых вы публикуете свои отличные и любимые методы расширения . Требование состоит в том, чтобы полный код должен быть опубликован, а также пример и объяснение того, как его использовать. Основываясь на высок...
07 нояб. '08 в 6:47
14

Можно ли добавить методы расширения к существующему статическому классу?

Я поклонник методов расширения в С#, но не имел никакого успеха, добавляя метод расширения к статическому классу, например, к консоли. Например, если я хочу добавить расширение в Консоль, называемое "WriteBlueLine", чтобы я мог: Console.WriteBlueL...
30 окт. '08 в 3:54
20

Почему в IEnumerable нет метода расширения ForEach?

Вдохновленный другим вопросом, спрашивающим о отсутствующей функции Zip: Почему в классе Enumerable нет метода расширения ForEach? Или где угодно? Единственным классом, который получает метод ForEach, является List<>. Есть ли причина, по кот...
19 сент. '08 в 11:49
7

Преобразовать строку [] в int [] в одной строке кода, используя LINQ

У меня есть массив целых чисел в строковой форме: var arr = new string[] { "1", "2", "3", "4" }; Мне нужно массив "реальных" целых чисел, чтобы продвинуть его дальше: void Foo(int[] arr) { .. } Я попытался использовать int, и это, конечно, не у...
19 авг. '09 в 0:09
7

В С#, что происходит, когда вы вызываете метод расширения на нулевом объекте?

Вызывается ли метод с нулевым значением или он дает исключение ссылочной ссылки? MyObject myObject = null; myObject.MyExtensionMethod(); // <-- is this a null reference exception? Если это так, мне никогда не придется проверять мой параметр 't...
11 мая '09 в 8:35
4

Код, эквивалентный ключевому слову 'let' в цепочке вызовов метода LINQ

Используя функции компилятора С# для компиляции запросов, вы можете написать код, например: var names = new string[] { "Dog", "Cat", "Giraffe", "Monkey", "Tortoise" }; var result = from animalName in names let nameLength = animalName.Length ...
07 июл. '09 в 14:31
13

Java эквивалентен методам расширения С#

Я хочу реализовать функциональность в списке объектов, как я бы в С#, используя метод расширения. Что-то вроде этого: List<DataObject> list; // ... List initialization. list.getData(id); Как это сделать на Java?
05 дек. '10 в 16:59
8

Расширения Razor HtmlHelper (или другие пространства имен для просмотров) Не найдено

Не знаю, произошло ли это в PR или Beta, но если я создам метод расширения на HtmlHelper, он не будет распознан на странице с поддержкой Razor: namespace SomeNamespace.Extensions { public static class HtmlExtensions { public static stri...
09 нояб. '10 в 17:37
5

Статические методы расширения

Возможный дубликат: Могу ли я добавить методы расширения к существующему статическому классу? Есть ли способ добавить статический метод расширения в класс. В частности, я хочу перегрузить Boolean.Parse, чтобы разрешить аргумент int.
15 мая '09 в 3:57
6

Перегрузка оператора с помощью методов расширения С#

Я пытаюсь использовать методы расширения для добавления перегрузки оператора в класс С# StringBuilder. В частности, данный StringBuilder sb, я хотел бы, чтобы sb += "text" стал эквивалентным sb.Append("text"). Вот синтаксис для создания метода расш...
05 окт. '08 в 20:59
6

Методы расширения должны быть определены в неэквивалентном статическом классе

Я получаю сообщение об ошибке: Методы расширения должны быть определены в неэквивалентном статическом классе В строке: public class LinqHelper Вот вспомогательный класс, основанный на коде Марка Гавелла. Я действительно смущен относительно тог...
23 мая '11 в 11:00
5

Издевательские методы расширения с помощью Moq

У меня есть существующий интерфейс... public interface ISomeInterface { void SomeMethod(); } и я расширил это intreface, используя mixin... public static class SomeInterfaceExtensions { public static void AnotherMethod(this ISomeInterfac...
19 февр. '10 в 11:41