Распарсить строку в разные nullable типы — Decimal И DateTime — в одном операторе - C#

Узнай цену своей работы

Формулировка задачи:

День добрый. Возникла необходимость парсить строку в разные nullable типы - Decimal? и DateTime? - в одном операторе. Для этого я сделал обобщённый класс (ну чтобы не писать свой парсинг для каждого из типов), вот такой:
class Nullables<T>
    where T: new() {
        public static T Parse(string arg) {
        dynamic obj = new T();
        if (arg == string.Empty) {
            return default(T);
        }
        else {
            return obj.Parse(arg);
        }
    }
}
и парсю так:
Date_start = Nullables<DateTime?>.Parse(splittedLine[5]);
Penya = Nullables<Decimal?>.Parse(splittedLine[11]);
Это всё работает, но не нравится, что статический метод Parse приходится вызывать на экземпляре класса. Пытался приблудить како-нибудь интерфейс IParsable, но мозгов не хватает понять, как его потом унаследовать уже существующими классами Decimal и DateTime. Буду благодарен за указание на то, как такую задачу можно решить покрасивее.

Решение задачи: «Распарсить строку в разные nullable типы — Decimal И DateTime — в одном операторе»

textual
Листинг программы
    public static class Parsers
    {
        public static Nullable<T> Parse<T>(this string input) 
            where T : struct
        {
            if (string.IsNullOrEmpty(input))
                return null;
            try
            {
                return new Nullable<T>((T)Convert.ChangeType(input, typeof(T)));
            }
            catch
            {
                return null;
            }
        }
    }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4 из 5