Automapper не работает с преобразованием в производный класс - PullRequest
0 голосов
/ 06 июня 2019

У меня есть 3 основных класса, участвующих в преобразовании с использованием Automapper 8.1.0.

public class MessageW{
   public int NumAverages { get; set; }
   public int RXWaveguide { get; set; }
}

public class ProcessingS{
   public ProcessingS(double startTime, double timeStep) {
        StartTime = startTime;
        TimeStep = timeStep;            
    }
   public double StartTime { get; }
   public double TimeStep { get; }
}

public class ProcessingW : ProcessingS {
   public int NumAverages { get; }
   public int RXWaveguide { get; }
   public ProcessingW(double startTime, double timeStep, int 
        numAverages, int rxWaveguide) : base( startTime, timeStep) {
        NumAverages = numAverages;
        RXWaveguide = rxWaveguide;
    }
}

Я конвертирую из MessageW класса в ProcessingW класс, используя Automapper. Обратите внимание, что класс ProcessingW унаследован от ProcessingS.

Вот моя Automapper конфигурация.

var msgWfm = new MessageW() {
                 NumAverages = 5,
                 RXWaveguide = 5
             };

 var mapperConfig = new MapperConfiguration(
                 cfg => {
                     cfg.CreateMap<MessageW, ProcessingW>()
                        .ForMember(proWfmDest => proWfmDest.StartTime, opt => opt.Ignore())
                        .ForMember(proWfmDest => proWfmDest.TimeStep, opt => opt.Ignore());
                 });

            var myMapper = mapperConfig.CreateMapper();
             mapperConfig.AssertConfigurationIsValid();

Когда я запускаю автоматическое преобразование, mapperConfig.AssertConfigurationIsValid(); выдает сообщение об ошибке:

Найдены несопоставленные участники. Просмотрите типы и членов ниже. Добавить пользовательское выражение сопоставления, игнорировать, добавить пользовательский преобразователь или изменить тип источника / назначения. Для не подходящего конструктора добавьте аргумент no-arg. ctor, добавить необязательные аргументы или отобразить все параметры конструктора ================================================== ======================== MessageW -> ProcessingW (Список участников назначения) MessageW -> ProcessingW (Список получателей)

Нет доступного конструктора.

Когда я пытался

  • удалить наследство из класса ProcessingW или
  • добавить StartTime, TimeStep свойства в MessageW class

Тогда преобразование Automapper сработает, однако перечисленные выше функции не соответствуют моим требованиям.

Как мне заставить Automapper работать на основе моего текущего дизайна класса и настроек Automapper? Я что-то пропустил?

Спасибо за ваше время и терпение, прочитав мой вопрос, и я с удовольствием добавлю детали, если потребуется.

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