Я создал связыватель моделей, используя отражение для установки значений свойств из CSV-файла.Все значения, проанализированные из файла, являются строками.Я использую Convert.ChangeType
, который работал в большинстве случаев для преобразования в релевантные типы, например int, long и т. Д., Но теперь значение "20180227" для даты необходимо проанализировать в моем свойстве DateTime
.Формат в CSV-формате: ггггММдд.Пока у меня есть код:
foreach (var property in matchedModel)
{
Type propType = Nullable.GetUnderlyingType(property.Value.PropertyType) ??
property.Value.PropertyType;
var value = string.IsNullOrEmpty(data.Value[property.Key]) ? null :
Convert.ChangeType(data.Value[property.Key], propType);
property.Value.SetValue(instance, value, null);
}
data.Value[property.Key]
- это то, что содержит мою проанализированную строку.
Переменная property
- это соответствующее свойство, которое необходимо установить.Так как у меня были некоторые свойства, которые можно обнулять, я должен был использовать Nullable.GetUnderlyingType
.
Проблема в том, что Convert.ChangeType
не может определить, как правильно изменить мой формат даты на объект DateTime.Я мог бы сделать что-то вроде:
if(property is datetime) do value conversion
Однако это было бы слишком жестко закодировано, и я хочу что-то более общее / динамичное.Как лучше всего подойти к этому?