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

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

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

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

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

textual
Листинг программы
  1.     public static class Parsers
  2.     {
  3.         public static Nullable<T> Parse<T>(this string input)
  4.             where T : struct
  5.         {
  6.             if (string.IsNullOrEmpty(input))
  7.                 return null;
  8.             try
  9.             {
  10.                 return new Nullable<T>((T)Convert.ChangeType(input, typeof(T)));
  11.             }
  12.             catch
  13.             {
  14.                 return null;
  15.             }
  16.         }
  17.     }

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


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

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

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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут