簡體   English   中英

訪問基類 c# 中的隱藏屬性

[英]Access hidden property in base class c#

在我的ASP.NET核心API,我有一個DTO類BaseDto和另一DerivedDto從繼承BaseDto和隱藏了一些它的屬性,因為他們在需要DerivedDto 我還有一個BaseModel類, BaseDtoDerivedDto將通過另一個類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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM