Распарсить строку в разные nullable типы — Decimal И DateTime — в одном операторе - C#
Формулировка задачи:
День добрый.
Возникла необходимость парсить строку в разные nullable типы - Decimal? и DateTime? - в одном операторе. Для этого я сделал обобщённый класс (ну чтобы не писать свой парсинг для каждого из типов), вот такой:
и парсю так:
Это всё работает, но не нравится, что статический метод Parse приходится вызывать на экземпляре класса. Пытался приблудить како-нибудь интерфейс IParsable, но мозгов не хватает понять, как его потом унаследовать уже существующими классами 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]);
Решение задачи: «Распарсить строку в разные 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;
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д