Automapper конвертировать ExpandoObject в словарь пользовательских объектов - PullRequest
0 голосов
/ 22 мая 2019

У меня есть объект 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 диктатора, используя первый длясделать значения.Это не работает (или компилируется, на самом деле ...)

Любая помощь будет принята с благодарностью.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...