C# 在派生的 class 属性 覆盖中使用基础 class 属性 值

C# Use base class property value in a derived class property override

我的class结构如下:

public class Animal
{
    private int _animalId;

    public virtual int AnimalId
    {
        get { return _animalId; }
    }
}

public class Dog : Animal
{
    public override int AnimalId
    {
        get 
        { 
            if (Request.Params["New_Animal"] == "true")
                return -1;
            else
                return AnimalId;
        }
    }
}

我想按如下方式覆盖 AnimalId 属性: 如果它是一种新动物,id 应该是 -1,但是如果我们要更新现有的动物,我想 return 来自基础 class.

AnimalId

这是一个极其简化的示例,但我想知道是否/如何做到这一点。

谢谢

您可以将 animal 中的 animalId 设置为 private protected,然后在 dog 中设置 return base.animalid 属性

使用base.AnimalId

public class Animal
{
    private int _animalId;

    public virtual int AnimalId
    {
        get { return _animalId; }
    }
}

public class Dog : Animal
{
    public override int AnimalId
    {
        get 
        { 
            if (Request.Params["New_Animal"] == "true")
                return -1;
            else
                return base.AnimalId;
        }
    }
}