Заполнение свойств на основе состояния конкретных свойствC#

Место общения программистов C#
Anonymous
Заполнение свойств на основе состояния конкретных свойств

Сообщение Anonymous »

У меня есть следующий сценарий
У меня есть следующие классы C#

Код: Выделить всё

   public class ApiRequest{
public int? FwVersion { get; set; }
public int? OsVersion { get; set; }

public int PageSize { get; set; }

public string Owner { get; set; } = String.Empty;
}

и

Код: Выделить всё

 public class DbRequest {
public int PageSize { get; set; }
public string Owner { get; set; } = String.Empty;

public int FwVersion { get; set; }
public bool FwVersionSpecified { get; set; }
public int OsVersion { get; set; }

public bool OsVersionSpecified { get; set; }
}

Теперь я конвертирую объекты из ApiRequest в DbRequest. Я должен это сделать следующим образом:
Для каждого свойства, допускающего значение NULL, в моем ApiRequest существует свойство, не допускающее значение NULL, в классе DbRequest и другое логическое значение. свойство с тем же именем и «SpecifiedSuffix». Я заполняю свойство, не допускающее значения NULL, используя

Код: Выделить всё

GetValueOrDefault()
и соответствующее указанное свойство с помощью HasValue. Вот пример моей конфигурации AutoMapper:

Код: Выделить всё

public class MappingConfiguration : Profile
{
public MappingConfiguration()
{
// Fix mappings
CreateMap()
.ForMember(dst => dst.FwVersion, opt => opt.MapFrom(
src => src.FwVersion.GetValueOrDefault()
))
.ForMember(dst => dst.FwVersionSpecified, opt => opt.MapFrom(
src => src.FwVersion.HasValue
))
.ForMember(dst => dst.OsVersion, opt => opt.MapFrom(src => src.OsVersion.GetValueOrDefault()))
.ForMember(dst => dst.OsVersionSpecified, opt => opt.MapFrom(src => src.OsVersion.HasValue));
}
}
Это работает. Однако моя проблема в том, что у меня есть другие классы, такие как ApiRequest/DbRequest, которые имеют множество свойств, допускающих значение NULL, и указанных свойств. Есть ли более простой способ сопоставить их, не просматривая каждое поле вручную?


Подробнее здесь: https://stackoverflow.com/questions/790 ... properties

Вернуться в «C#»