У меня есть объект expandoObject, такой как
var attributeToMapFrom = new ExpandoObject();
attributeToMapFrom.Add("1", "Attribute1");
attributeToMapFrom.Add("2", "Attribute2");
У меня также есть класс в приложении, называемый 'CustomAttribute'
public class CustomAttribute
{
public int Id;
public string AttributeValue;
}
И другое место, где используется их словарь:
var dict = new dictionary<int, CustomAttribute>();
Я хотел бы использовать Automapper для отображения значений в expandoObject в словарь, чтобы в итоге я получил словарь, содержащий:
Key | Value
1 | CustomAttribute{Id = 1, AttributeValue = "Attribute1"}
2 | CustomAttribute{Id = 2, AttributeValue = "Attribute2"}
Я бы хотелотобразите это следующим образом:
var attributeToMapFrom = new ExpandoObject();
attributeToMapFrom.Add("1", "Attribute1");
attributeToMapFrom.Add("2", "Attribute2");
var mappedAttributes = new Dictionary<int, CustomAttribute>();
this.Mapper.Map(attributeToMapFrom, mappedAttributes);
Я использую следующее в конфигурации картографа:
CreateMap<KeyValuePair<string, object>,CustomAttribute>()
.ForMember(dest => dest.AttributeId, src => src.MapFrom(t => Convert.ToInt32(t.Key)));
CreateMap<KeyValuePair<string, object>, KeyValuePair<int, CustomAttribute>>()
.ConstructUsing( x => new KeyValuePair<int, CustomAttribute>( Convert.ToInt32(x.Key), x.MapTo<CustomAttribute>() ) );
Я думал, что второй createmap создаст keyValuePairs диктатора, используя первый длясделать значения.Это не работает (или компилируется, на самом деле ...)
Любая помощь будет принята с благодарностью.