// Convert this mapper from the base class: public static VmSensor FromDomain(Sensor sensor) { return new VmSensor { Id = sensor.Id, SensorSerial = sensor.SensorSerial, SensorModuleId = sensor.SensorModuleId, TankId = sensor.TankId, Status = sensor.Status, InstallDate = sensor.InstallDate, Remark = sensor.Remark, SensorTypeId = sensor.SensorTypeId, BatteryInstallDate = sensor.BatteryInstallDate }; }
// to a generic one: public static VmSensor FromDomain(Sensor sensor) { return FromDomain<VmSensor>(sensor); } public static T FromDomain<T>(Sensor sensor) where T : VmSensor { if (sensor == null) return null; var vmSensor = Activator.CreateInstance<T>(); vmSensor.Id = sensor.Id; vmSensor.SensorSerial = sensor.SensorSerial; vmSensor.SensorModuleId = sensor.SensorModuleId; vmSensor.TankId = sensor.TankId; vmSensor.Status = sensor.Status; vmSensor.InstallDate = sensor.InstallDate; vmSensor.Remark = sensor.Remark; vmSensor.SensorTypeId = sensor.SensorTypeId; vmSensor.BatteryInstallDate = sensor.BatteryInstallDate; return vmSensor; } // and in the subclass: public static VmSensorWithBasicMeasurements FromDomain(Sensor sensor) { var vm = FromDomain<VmSensorWithBasicMeasurements>(sensor); vm.Measurements = sensor.Measurements.Select(x => VmMeasurementBasic.FromDomain(x)); return vm; }
205900cookie-checkC# re-use base mapping in subclass