Использование AutoMapper для отображения полей объекта в массив? - PullRequest
0 голосов
/ 16 февраля 2011

Можно ли с помощью автомпера в C # отобразить свойства объекта в массив / словарь?Я пробовал следующее:

Mapper.CreateMap<FFCLeads.Models.FFCLead, Dictionary<string, SqlParameter>>()
    .ForMember(d => d["LeadID"], o => o.MapFrom(s => new SqlParameter("LeadID", s.LeadID)))
    .ForMember(d => d["LastName"], o => o.MapFrom(s => new SqlParameter("LastName", s.LastName)));

Однако, это не работает (объект ref не установлен в экземпляр)По сути, я пытаюсь преобразовать значения этого объекта в массив объектов SqlParameter.Возможный?Если да, то как правильно это сделать?Спасибо.

1 Ответ

5 голосов
/ 16 февраля 2011

Я использую следующий метод:

IDictionary<string, object> GetDictionaryFromObject(object obj)
{
    if(obj == null) return new Dictionary<string, object>();
    return obj.GetType().GetProperties().
                ToDictionary(p => p.Name,
                             p => p.GetValue(obj, null) ?? DBNull.Value);
}
...