У меня есть 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? Я что-то пропустил?
Спасибо за ваше время и терпение, прочитав мой вопрос, и я с удовольствием добавлю детали, если потребуется.