抽象类中的属性可见性

有人知道关于在抽象类或父类中公共属性后面定义属性可见性(私有或受保护)的方法的C#最佳实践。

在其他世界中,默认情况下(以及为什么)之间的最佳实践是:

public abstract class MyClass { private string myAttribute; public string MyAttribute { get { return myAttribute; } set { myAttribute = value; } } } 

 public abstract class MyClass { protected string myAttribute; public string MyAttribute { get { return myAttribute; } set { myAttribute = value; } } } 

我认为子类应该有办法直接处理这个受保护的属性,但如果getter或setter包含更多的代码,它可能不是一个好习惯…

你觉得怎么样?

谢谢。

非const字段应该总是私有的。 如果由于某些原因无法使用自动属性而需要使用字段,请确保它是私有的。 儿童class应通过公共或受保护的财产进入。

绝对私密。 但是,有一种更简单的方法来做你正在做的事情:

 public abstract class MyClass { public string MyAttribute { get; set; } } 

这完全相同,但它更容易维护。

绝对私密。 在定义抽象类时,如果它是满足以下条件的行为,则仅保护项目

  1. 子类必须覆盖或有权访问
  2. 外部类不应该有权访问

在这种情况下,您已经为外部类提供了访问该值的权限。 保护它并不会给子类带来任何真正的好处。

我发现了public get,protected set:comments的一个限制。 因为对于公众和受保护的评论不应该相同,尊重stylecop: – 对公众的评论:获取评论 – 对protected的评论:获取或设置评论

我不想为两个可见性做两个属性,所以我用以下注释解决了它quiclky:获取ot set(protected)comment。

如果你有更好的练习,欢迎。