【问题标题】:Extends simple getter, setter Methods for Classes in C#为 C# 中的类扩展简单的 getter、setter 方法
【发布时间】:2013-05-24 01:39:10
【问题描述】:

我有一个抽象类“建筑”:

public abstract class Building {
abstract public int ID {get;}
abstract public string name {get;}
}

类(例如)总部:Building 具有这些 getter 和 setter 方法的变量。问题是我必须写在每个子类中

private int _ID = 1;
public int ID {
    get {return _ID;}
}

有没有办法在抽象类中创建一个像前面一样的getter setter方法并保存代码,这样我只需要设置变量吗? 感谢您的帮助。

【问题讨论】:

    标签: c# class extend setter getter


    【解决方案1】:

    您可以使设置器受保护,和/或允许它们在构造函数中设置,而不是使属性抽象:

    public abstract class Building 
    {
        // Optional constructor
        protected Building(int id, string name)
        {
             this.ID = id;
             this.Name = name;
        }
    
        public int ID { get; protected set; }
        public string Name { get; protected set; }
    }
    

    这会将实现移到基类中,但仍然只允许子类设置这些值。

    【讨论】:

      【解决方案2】:

      您可以尝试在基类中添加protected setter,并在派生类的ctor中设置值:

      public class Building
      {
           public int Id{get;protected set;}
      

      在派生类中:

      public class Headquarter: Building
      {
          public Headquarter()
          {
              Id = 1;
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-08-09
        • 1970-01-01
        • 2016-08-04
        • 1970-01-01
        • 2019-05-04
        • 1970-01-01
        • 2016-08-12
        • 1970-01-01
        相关资源
        最近更新 更多