gpt4 book ai didi

c# - 访问基类 c# 中的隐藏属性

转载 作者:行者123 更新时间:2023-12-04 10:43:08 29 4
gpt4 key购买 nike

在我的 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作为抽象,但这会阻止我实例化它,我需要这样做。

最佳答案

您需要将 BaseDto 类属性声明为 virtual ,然后在 DerivedDto 类中覆盖它,如下所示:

public class BaseDto
{
public virtual string Name { get; set; }
}

public class DerivedDto : BaseDto
{
public override string Name { get; set; }
}

另外,请修复您的 Mapper 类方法。 BaseModel 中没有属性 Name。它需要是“NameModel = dto.Name”

关于c# - 访问基类 c# 中的隐藏属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59840471/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com