Отображение динамического / словарьв класс с некоторыми другими именами свойств с AutoMapper - PullRequest
0 голосов
/ 21 сентября 2018

Я хочу сопоставить словарь или ExpandoObject с классом.Проблема в том, что у класса разные имена, которые должны распознаваться AutoMapper через RecognizePrefixes("SomePrefix"), а некоторые свойства должны отображаться «вручную».я хочу, чтобы часть «вручную» была близка к нулю, и оставила отображение и отображение свойств для AutoMapper.

Пример:

class MyClass
{
    public Guid Id { get; set; }
    public string Name { get; set; }
    public string OtherPropName { get; set; }
}

var d = new Dictionary<string, object>
{
    { "SomePrefixId", Guid.NewGuid() },
    { "SomePrefixName", "My Name" },
    { "SomePrefixProp", "Some Value" },
}

var customMap = new Dictionary<string, string>
{
    { nameof(MyClass.OtherPropName), "SomePrefixProp" },
};

var config = new MapperConfiguration(c =>
{
    c.RecognizePrefixes(prefix);
    var map = c.CreateMap<IDictionary<string, object>, MyClass>(MemberList.Destination);

    if (customMap != null)
    {
        foreach (var pair in customMap)
        {
            map.ForMember(pair.Key, m => m.MapFrom(src => src[pair.Value]));
        }
    }
    map.ForAllMembers(m => m.MapAtRuntime());
});

с этим кодом, единственное, что я получаюmapped - это явно указанное свойство, но map.ForAllMembers(m => m.MapAtRuntime()) не влияет на отображение.все остальные свойства имеют значение null / имеют значение по умолчанию.поэтому я мог сам определить свойства и сделать с помощью пользовательского кода отображения, но я подумал, что можно было бы избежать этого.Я читал, что в AutoMapper есть поддержка Dynamic и ExpandoObject , но я не понимаю, как настроить отображение в соответствии с моими потребностями ...

любая помощь очень ценится!:) спасибо!

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