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

Метод расширения - это языковая функция некоторых языков, таких как Swift, Visual Basic.NET и C #. Методы расширения позволяют «добавлять» методы к существующим типам без создания нового производного типа, перекомпиляции или иного изменения исходного типа.

16
Преобразование строки в тип, допускающий значение NULL (int, double и т. Д.)
Я пытаюсь преобразовать данные. К сожалению, большая часть данных находится в строках, где они должны быть int или double и т. Д. Итак, у меня есть что-то вроде: double? amount = Convert.ToDouble(strAmount); Проблема с этим подходом заключается в том, что если strAmount пуст, если он пуст, я хочу, чтобы сумма …

13
Могу ли я «умножить» строку (в C #)?
Предположим, у меня есть строка, например, string snip = "</li></ul>"; Я хочу написать его несколько раз, в зависимости от целого числа. string snip = "</li></ul>"; int multiplier = 2; // TODO: magic code to do this // snip * multiplier = "</li></ul></li></ul>"; РЕДАКТИРОВАТЬ: Я знаю, что могу легко написать свою …

2
Как добавить новые методы к существующему типу в Go?
Я хочу добавить удобный метод использования для gorilla/muxтипов Route и Router: package util import( "net/http" "github.com/0xor1/gorillaseed/src/server/lib/mux" ) func (r *mux.Route) Subroute(tpl string, h http.Handler) *mux.Route{ return r.PathPrefix("/" + tpl).Subrouter().PathPrefix("/").Handler(h) } func (r *mux.Router) Subroute(tpl string, h http.Handler) *mux.Route{ return r.PathPrefix("/" + tpl).Subrouter().PathPrefix("/").Handler(h) } но компилятор сообщает мне Невозможно определить новые …

1
Можно ли применять методы расширения к интерфейсам?
Можно ли применить к интерфейсу метод расширения? (Вопрос C #) Это, например, для достижения следующего: создать интерфейс ITopology создать метод расширения для этого интерфейса (например, public static int CountNodes (this ITopology topologyIf)) затем при создании класса (например, MyGraph), который реализует ITopology, он автоматически получит расширение Count Nodes. Таким образом, классы, …

8
Добавить диапазон в коллекцию
Сегодня сотрудник спросил меня, как добавить диапазон в коллекцию. У него есть класс, наследующий от Collection<T>. У этого типа есть свойство только для получения, которое уже содержит некоторые элементы. Он хочет добавить элементы из другой коллекции в коллекцию свойств. Как он может сделать это в стиле C # 3? (Обратите …

9
Как расширить класс методами расширения c #?
Можно ли применить к классу методы расширения? Например, расширите DateTime, чтобы включить метод Tomorrow (), который можно было бы вызывать следующим образом: DateTime.Tomorrow(); Я знаю, что могу использовать static DateTime Tomorrow(this Datetime value) { //... } Или public static MyClass { public static Tomorrow() { //... } } для аналогичного …

4
Есть ли способ в C # переопределить метод класса с помощью метода расширения?
Были случаи, когда я хотел переопределить метод в классе с помощью метода расширения. Есть ли способ сделать это на C #? Например: public static class StringExtension { public static int GetHashCode(this string inStr) { return MyHash(inStr); } } Случай, когда я хотел это сделать, - это иметь возможность хранить хэш …

5
Как использовать расширения ядра Active Support
У меня установлена ​​Active Support 3.0.3 и Rails 3.0.3 с Ruby 1.8.7. Когда я пытаюсь использовать, 1.week.agoя получаю NoMethodError: undefined method 'week' for 1:Fixnum from (irb):2 Другие основные расширения вроде работают. Я попробовал его на компьютере друга (у него те же спецификации установки и устаревшие версии) с теми же результатами. …

2
Где находится метод расширения LINQ «Сгибание»?
В примерах MSDN Linq я нашел изящный метод под названием Fold (), который я хочу использовать. Их пример: double[] doubles = { 1.7, 2.3, 1.9, 4.1, 2.9 }; double product = doubles.Fold((runningProduct, nextFactor) => runningProduct * nextFactor); К сожалению, я не могу скомпилировать это ни в их примере, ни в …


5
Как расширить встроенные типы C #, например String?
Привет всем ... Мне нужен Trima String. Но я хочу удалить все повторяющиеся пробелы в самой строке, а не только в конце или в начале ее. Я мог бы сделать это с помощью такого метода: public static string ConvertWhitespacesToSingleSpaces(string value) { value = Regex.Replace(value, @"\s+", " "); } Который я …

6
Как использовать Moq для имитации метода расширения?
Я пишу тест, который зависит от результатов метода расширения, но я не хочу, чтобы будущий сбой этого метода расширения когда-либо нарушил этот тест. Насмешка над этим результатом казалась очевидным выбором, но Moq, похоже, не предлагает способа переопределить статический метод (требование для метода расширения). Аналогичная идея есть с Moq.Protected и Moq.Stub, …

2
Как мне написать метод расширения на JavaScript?
Мне нужно написать несколько методов расширения на JS. Я знаю, как это сделать на C #. Пример: public static string SayHi(this Object name) { return "Hi " + name + "!"; } а затем позвонил: string firstName = "Bob"; string hi = firstName.SayHi(); Как мне сделать что-то подобное в JavaScript?

30
Какие преимущества методов расширения вы обнаружили? [закрыто]
В настоящее время этот вопрос не подходит для нашего формата вопросов и ответов. Мы ожидаем, что ответы будут подтверждены фактами, ссылками или опытом, но этот вопрос, скорее всего, повлечет за собой дебаты, аргументы, опросы или расширенное обсуждение. Если вы считаете, что этот вопрос можно улучшить и, возможно, снова открыть, обратитесь …

8
Пример быстрого расширения
Изначально я хотел узнать, как сделать что-то подобное UIColor.myCustomGreen чтобы я мог определять свои собственные цвета и использовать их во всем своем приложении. Раньше я изучал расширения и думал, что, вероятно, смогу использовать их для решения своей проблемы, но я не мог точно вспомнить, как устанавливать расширения. Поиск в Google …

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.