Распарсить строку в разные 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;
}
}
}