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

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

Сообщение Anonymous »

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

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

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#»