У меня есть классы DO и DTO:
public class DO
{
public int Property1 { get; set; }
public int Property2 { get; set; }
}
public class DTO
{
public int MappedProperty1 { get; set; }
public int MappedProperty2 { get; set; }
}
Регистрация сопоставления для вышеуказанных классов, как показано ниже.
// From DO to DTO:
configuration.CreateMap<DO, DTO>()
.ForMember(d => d.MappedProperty1, o => o.MapFrom(s => s.Property1))
.ForMember(d => d.MappedProperty2, o => o.MapFrom(s => s.Property1 + s.Property2));
// From DTO to DO:
configuration.CreateMap<DTO, DO>()
.ForMember(d => d.Property1, o => o.MapFrom(s => s.MappedProperty1))
.ForMember(d => d.Property2, o => o.MapFrom(s => s.MappedProperty1 - s.MappedProperty2));
В другом месте кода мне нужно получить свойство назначения.имена в отображении.В настоящее время я делаю это:
var map= mapper.ConfigurationProvider.FindTypeMapFor<DTO, DO>();
var property = map.GetPropertyMaps().First(f => f.SourceMember == typeof(DTO).GetProperty("MappedProperty1"));
var name = property.DestinationProperty.Name;
Это прекрасно работает с MappedProperty1
.Однако он не работает с MappedProperty2
, поскольку в отображении участвуют два свойства.Вместо этого я получаю сообщение об ошибке:
«Последовательность не содержит соответствующий элемент».
Я также попытался использовать следующий фильтр вместо First
, и в отладке я вижу, что счетчик всписок равен нулю.
var map= mapper.ConfigurationProvider.FindTypeMapFor<DTO, DO>();
var property = map.GetPropertyMaps().Where(w => w.SourceMember == typeof(DTO).GetProperty("MappedProperty2")).ToList();
Как мне добиться этого разрешения имени источника для сопоставления с несколькими свойствами?