有人知道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包含更多的代码,这可能不是一个好习惯......
你怎么看?
谢谢。
答案 0 :(得分:8)
非常量字段应该始终是私有的。如果由于某些原因无法使用自动属性而需要使用字段,请确保它是私有的。儿童班应通过公共或受保护的财产进入。
答案 1 :(得分:2)
绝对私密。但是,有一种更简单的方法可以做你正在做的事情:
public abstract class MyClass
{
public string MyAttribute { get; set; }
}
这完全相同,但它更容易维护。
答案 2 :(得分:2)
绝对私密。在定义抽象类时,如果它是符合以下
的行为,则仅保护项目在这种情况下,您已经为外部类提供了访问该值的权限。保护它并不会给子类带来任何真正的好处。
答案 3 :(得分:0)
我发现了public get,protected set:comments的一个限制。 因为对于公众和受保护的评论不应该相同,尊重stylecop: - 对公众的评论:获取评论 - 对protected的评论:获取或设置评论
我不想为两个可见性做两个属性,所以我用以下注释解决了它quiclky:获取ot set(protected)comment。
如果你有更好的练习,欢迎。