У меня есть модель источника определяется какAutoMapper один источник объекта многократным назначения объектов
public class SourceRoot
{
...
public Organisation Organisation { get; set; }
...
}
public class Organisation
{
public long? Id { get; set; }
public string Name { get; set; }
public string Currency { get; set; }
public double SupplementaryAmount { get; set; }
public decimal BaseConversionRate { get; set; }
}
и назначения определяется как:
public class DestinationRoot
{
...
public Organisation Organisation { get; set; }
public ContributesTo ContributesTo { get; set; }
}
public class Organisation
{
public long? Id { get; set; }
public string Name { get; set; }
}
public class ContributesTo
{
public string Currency { get; set; }
public double SupplementaryAmount { get; set; }
public decimal BaseConversionRate { get; set; }
}
Я хочу карту от SourceRoot
к DestinationRoot
добавьте копию из источника Organisation
в пункт назначения Organisation
И ContributesTo
.
Я имею следующую конфигурацию AutoMapper:
public static class AutoMapperConfig
{
public static MapperConfiguration RegisterMappings()
{
var config = new MapperConfiguration(cfg =>
{
cfg.AddProfile<MyProfile>();
});
return config;
}
}
public class MyProfile : Profile
{
protected override void Configure()
{
this.CreateMap<SourceRoot, DestinationRoot>();
this.CreateMap<Source.Organisation, Destination.Organisation>();
this.CreateMap<Source.Organisation, Destination.ContributesTo>();
}
}
Используя этот текущий профиль по Organisation
получает переведенный но ContributesTo
выходит как нуль. Обратите внимание, что я использую версию 4.2 AutoMapper, в которой статические методы устарели, поэтому старайтесь избегать этого. Обычно я хотел бы сделать:
Mapper.CreateMap<SourceRoot, DestinationRoot>()
.ForMember(d => d.ContributesTo, opt => opt.MapFrom(s=> Mapper.Map<ContributesTo>(s.Organisation)));
Но это не рекомендуется больше (ссылки на статические методы). Есть ли альтернативный способ сделать это?
Благодаря
Это одна из тех вещей, которые вы слишком усердно пытаетесь найти решение (например, я пытался сделать карту для него), когда ответ действительно прост! Спасибо за это! – ADringer