[英]Access hidden property in base class c#
在我的ASP.NET核心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”
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.