Как создать функцию автоматического сопоставления между совершенно разными классами - PullRequest
0 голосов
/ 21 октября 2018

Как создать конфигурацию AutoMapper, когда исходный и целевой классы полностью различаются?Я хочу создать отображение между некоторыми внешними классами (которые нельзя изменить) и моими классами, которые я собираюсь сохранить в БД.Я мог бы сохранить весь внешний класс, но я не хочу делать это, чтобы сэкономить место.Я использую .net Core 2.0.

Например: у меня есть внешний класс, как показано ниже:

A
{
   B {
        b1;b2;b3;
   }
   C {
        c1;c2;c3;
   }
}

Выше должно быть сопоставлено с моим классом, определенным как показано ниже:

A
{
    Optmized_BC{ 
      b1;
      b2;
      c1;
    }
    c2;
}

Чтолучший способ создать конфигурацию AutoMapper в приведенном выше случае?Должен ли я вызывать CreateMap для каждой пары исходной / целевой переменной?Есть ли способ, где я могу отобразить все переменные внутри одного вызова CreateMap (возможно, с использованием некоторого умного linq?)

1 Ответ

0 голосов
/ 21 октября 2018

Вы можете сохранить ваши данные как JSON в базе данных, тогда было бы легко десериализовать их в другой класс, используя библиотеку Newtonsoft JSON.Вы должны решить, проще ли это, чем писать функцию mapper для каждого случая.Та же самая структура / наименование будет десериализована автоматически, в противном случае вы можете использовать «динамический».

Просто чтобы дать вам представление:

var result = JsonConvert.DeserializeObject<dynamic>(json);
A a = new A();
a.Optmized_BC.b1 = result.B.ToObject<B>().b1;

Я бы предложил использовать явный маппер инакрой его юнит-тестами

...