[Опрос] extension-методы в отдельный namespace?
От: Sinix  
Дата: 27.01.17 05:48
Оценка:
Нужна помощь

В StringExtensions помимо прочих есть порядка 25 extension-методов вида
  Скрытый текст
        [Pure]
        public static ushort? ToUInt16(
            [CanBeNull] this string str,
            NumberStyles numberStyle = NumberStyles.Integer,
            [CanBeNull] IFormatProvider provider = null)
        {
            ushort result;
            return ushort.TryParse(str, numberStyle, provider, out result) ? (ushort?)result : null;
        }

        [Pure]
        public static ushort? ToUInt16Invariant(
            [CanBeNull] this string str,
            NumberStyles numberStyle = NumberStyles.Integer)
        {
            ushort result;
            return ushort.TryParse(str, numberStyle,  CultureInfo.InvariantCulture, out result) ? (ushort?)result : null;
        }

        [Pure]
        public static int? ToInt32(
            [CanBeNull] this string str,
            NumberStyles numberStyle = NumberStyles.Integer,
            [CanBeNull] IFormatProvider provider = null)
        {
            int result;
            return int.TryParse(str, numberStyle, provider, out result) ? (int?)result : null;
        }

        [Pure]
        public static int? ToInt32Invariant(
            [CanBeNull] this string str,
            NumberStyles numberStyle = NumberStyles.Integer)
        {
            int result;
            return int.TryParse(str, numberStyle,  CultureInfo.InvariantCulture, out result) ? (int?)result : null;
        }


Выглядит на практике это вот так
  Скрытый текст


Собственно вопрос раз: что делать с этими extension-методами?
http://rsdn.org/poll/6413
Автор: Sinix
Дата: 27.01.17
Вопрос: http://rsdn.org/forum/prj.codejam/6679308


Вопрос два — в каком стиле их называть?
http://rsdn.org/poll/6414
Автор: Sinix
Дата: 27.01.17
Вопрос: http://rsdn.org/forum/prj.codejam/6679308


UPD. Вариант
"1.0".ParseDouble(defValue, CultureInfo.CurrentCulture);
"1.0".ParseDouble(defValue); // uses invariant culture

не прокатит, к сожалению. Все "универсальные" методы разбора/форматирования фреймворка по умолчанию используют текущую культуру. Нравится это или нет, но мы должны следовать этому решению, чтобы не пложить новых WTF. Так что или имя с Invariant на конце (по аналогии с .ToUpperInvariant(), скажем), или никак.
Отредактировано 27.01.2017 17:00 Sinix . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.