В моем ASP. NET Core API у меня есть класс DTO BaseDto
и еще один DerivedDto
, который наследуется от BaseDto
и скрывает некоторые его свойства, поскольку они требуются в DerivedDto
, У меня также есть класс BaseModel
, в который BaseDto
и DerivedDto
будут отображаться через другой класс Mapper
.
Что-то вроде следующего кода:
using System.ComponentModel.DataAnnotations;
public class BaseDto
{
public string Name { get; set; }
}
public class DerivedDto : BaseDto
{
[Required]
public new string Name { get; set; }
}
public class BaseModel
{
public string NameModel { get; set; }
}
public static class Mapper
{
public static BaseModel MapToModel(BaseDto dto) => new BaseModel
{
NameModel = dto.Name
};
}
Но оказывается, при передаче объекта DerivedDto
методу MapToModel
он пытается получить доступ к значениям BaseDto
(которые null
) вместо DerivedDto
.
Есть ли способ, которым я могу достичь этого поведения?
Я могу думать только о том, чтобы объявить BaseDto
абстрактным, но это помешало бы мне создать его экземпляр, что мне нужно сделать.