代码之家  ›  专栏  ›  技术社区  ›  full-stack

C#在派生类属性重写中使用基类属性值

  •  3
  • full-stack  · 技术社区  · 7 年前

    我的班级结构如下:

    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 财产如下: 动物

    谢谢

    2 回复  |  直到 7 年前
        1
  •  3
  •   yW0K5o    7 年前

    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;
            }
        }
    }
    
        2
  •  0
  •   juliushuck    7 年前

    你可以让animalId in animal private protected,在dog中你可以返回属性中的base.animalId