У меня есть таблица поиска, которая Я загружаю словарь для использования в CustomResolver. keyValue1 + keyValue2 — мой «ключ».
Код: Выделить всё
public class myLookUpEntity
{
public string keyValue1 { get; set; }
public string keyValue2 { get; set; }
public string CodeLookup { get; set; }
}
Я пытаюсь сопоставить два разных исходных объекта с одним и тем же целевым объектом, используя что-то вроде этого
Код: Выделить всё
.ForMember(dest => dest.targetField, opt => opt.MapFrom(src => src.sourceField1.PadRight(14)))
and
.ForMember(dest => dest.targetField, opt => opt.MapFrom(src => "".PadRight(10) + src.sourceField2.PadRight(4)))
Код: Выделить всё
public class LookupTable
{
public IDictionary LookupEntries { get; set; }
}
public class MyLookupResolver : IMemberValueResolver
{
private readonly LookupTable myLookupTable;
public MyLookupResolver()
{
// This constructor is only used by XUnit Tests
this.myLookupTable = new LookupTable() { LookupEntries = new Dictionary() { } };
}
public MyLookupResolver(IOptions myTable)
{
this.myLookupTable = myTable.Value;
}
public string Resolve(object source, object destination, string keyValue, string resultValue, ResolutionContext context)
{
resultValue = "";
if (myLookupTable.LookupEntries.TryGetValue(keyValue, out myLookupEntity value))
resultValue = value.CodeLookup;
return resultValue;
}
}
Типы сопоставления ошибок.
Типы сопоставления: sourceObject1 -> destObject
.sourceObject1 ->
.destObject
Конфигурация карты типов: sourceObject1 -> destObject
.sourceObject1 ->
.destObject
Целевой элемент: targetField
Надеюсь, этой информации достаточно, чтобы направить меня на правильный путь.
Подробнее здесь: https://stackoverflow.com/questions/791 ... -field-key