Преобразование проанализированной строки из csv в свойство datetime с помощью отражения - PullRequest
0 голосов
/ 21 декабря 2018

Я создал связыватель моделей, используя отражение для установки значений свойств из 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

Однако это было бы слишком жестко закодировано, и я хочу что-то более общее / динамичное.Как лучше всего подойти к этому?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...