Прошло много времени с тех пор, как я использовал automapper, но я почти уверен, что моя ситуация должна быть возможной.
Настройка
Я создал следующее конфигурация отображения:
var map = cfg.CreateMap<TSource, Structure>();
Так что в моей ситуации источником является обобщенный тип c (неизвестно), а целевым типом является Структура (известна).
Возможная опция для TSource Тип может быть:
public class DataChannel
{
public string Id { get; set; }
public string Description { get; set; }
public string Ean { get; set; }
public DateTimeOffset ValidFrom { get; set; }
public bool IsManual { get; set; }
public string Type { get; set; }
public string Unit { get; set; }
public string Address { get; set; }
public string BuildingId { get; set; }
}
Целевой объект Structure выглядит следующим образом:
public class Structure : IStructure
{
public Structure()
{
Children = new List<Structure>();
Properties = new List<StructureProperty>();
}
public int Id { get; set; }
public ICollection<StructureProperty> Properties { get; set; }
public List<Structure> Children { get; set; }
}
Ситуация
Например, я хотел бы строковые свойства «Unit» и «Type», добавляемые в качестве объекта StructureProperty в коллекцию Properties объекта Structure.
map.ForMember(c => c.Properties, m => m.MapFrom<StructurePropertyResolver<TSource>>());
Как это можно сделать?