Какая альтернатива для сопоставления различных имен параметров конструктора в Automapper, кроме ForCtorParam - PullRequest
0 голосов
/ 06 июня 2019

Есть 3 класса, которые я использую в конвертации с использованием Automapper 8.1.0

public class A{
   public int Length{ get; set; }
   public int FrequencyHz{ get; set; }
   public int RXWaveguide { get; set; }
}

public class C{
   public C(double time) {
        Time = time;            
    }
   public double Time { get; }
}

public class B : C {
   public int Length{ get; }
   public int TXWaveguide { get; }
   public B(double time, int length, int txWaveguide) : base(time) {
        Length = length;
        TXWaveguide = txWaveguide;
    }
}

Я хочу преобразовать из A в B, где B наследуется от C.

Код ниже показывает мой Automapper configuration.

var objA = new A() {
                 Length = 5,
                 FrequencyHz = 5,
                 RXWaveguide = 5
             };

 var mapperConfig = new MapperConfiguration(cfg => {
            cfg.CreateMap<A, B>()
               .ForCtorParam("time", opt => opt.MapFrom(src => (double)1 / src.FrequencyHz))
               .ForCtorParam("txWaveguide", opt => opt.MapFrom(srcA => srcA.RXWaveguide * 10));
        });
        var myMapper = mapperConfig.CreateMapper();
        mapperConfig.AssertConfigurationIsValid();
        return myMapper.Map<B>(input);

Мне неудобно использовать имя строки в ForCtorParam.

Есть ли другой альтернативный способ отображения класса A в B с использованием Automapper, но не с ForCtorParam?

Спасибо

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