У меня есть следующий класс:
public class Ad
{
public int Id {get;set;}
public string Title { get; set; }
public string UrlTitle { get; set; }
public LookUp Color {get;set}
public LookUp Condition {get;set}
public int InsertUserId {get; set;}
public DateTime InsertDate {get; set;}
}
Класс LookUp выглядит следующим образом:
public class LookUp
{
public int Id {get;set;}
public string Name { get; set; }
public int InsertUserId {get; set;}
public DateTime InsertDate {get; set;}
}
Затем у меня есть ViewModels для таких классов, как:
public class AdModel
{
public int Id {get;set;}
public string Title { get; set; }
public string UrlTitle { get; set; }
public LookUpModel Color {get;set}
public LookUpModel Condition {get;set}
}
public class LookUpModel
{
public int Id {get;set;}
public string Name { get; set; }
}
Теперь в моем контроллере я делаю что-то вроде этого:
public IHttpActionResult Get(int adId)
{
var ad = AdService.Get(adId);//Getting ad from DB
AdModel adModel = new AdModel();
adModel.InjectFrom(ad);
return Ok(adModel);
}
Моя проблема в том, что ValueInjecter
копирует только свойства первого уровня объявления, такие как Id, Title, UrlTitle
, но не копирует свойство LookUp
в свойство LookUpModel
.
Mapper.Map
вместо.InjectFrom
читайте об этом здесь: github.com/omuleanu/ValueInjecter ; вам нужно будет вызватьMapper.AddMap
для каждой пары типов перед сопоставлением (и вызвать Mapper.Map внутри AddMap) - person Omu   schedule 13.03.2017