C# 抽象类中的属性可见性

C# 抽象类中的属性可见性,c#,properties,C#,Properties,是否有人知道C#关于在抽象类或父类的公共属性后面定义属性可见性(私有或受保护)的方法的最佳实践 在其他情况下,默认情况下最佳实践是什么(以及为什么): 及 我认为children类应该有直接处理这个受保护属性的方法,但如果getter或setter包含更多代码,这可能不是一个好的实践 你觉得怎么样 谢谢。非常量字段应该始终是私有的。如果由于某种原因无法使用自动属性而需要使用字段,请确保该字段是私有的。儿童类应通过公共或受保护的属性访问它。绝对是私有的。但是,有一种更简单的方法来做你正在做的事情:

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

在其他情况下,默认情况下最佳实践是什么(以及为什么):

我认为children类应该有直接处理这个受保护属性的方法,但如果getter或setter包含更多代码,这可能不是一个好的实践

你觉得怎么样


谢谢。

非常量字段应该始终是私有的。如果由于某种原因无法使用自动属性而需要使用字段,请确保该字段是私有的。儿童类应通过公共或受保护的属性访问它。

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

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

这样做完全一样,但维护起来容易多了。

绝对是私密的。当定义一个抽象类时,我只在满足以下条件的行为中保护项

  • 子类必须重写或有权访问
  • 外部类不应该有权访问

  • 在本例中,您已经为外部类提供了对该值的访问权限。使其受到保护不会给子类带来任何真正的优势

    我发现公共get、protectedset有一个限制:comments。 因为对于公众和受保护的人来说,评论不应该是相同的,所以尊重stylecop: -公众评论:获取评论 -受保护的注释:获取或设置注释

    我不想对这两个可见性都使用两个属性,所以我用以下注释快速地解决了它:getot set(protected)comment


    如果您有更好的实践,欢迎使用。

    就此而言,我认为即使是包含类也应该只通过属性进行访问。+1,当不需要在getter/setter中进行特殊处理时,这非常有用。您还可以使用public和private限制getter和setter的可见性。好吧,我不知道自动实现的属性!我对你的答案投了赞成票,并指出它应该是正确的答案。私有支持字段肯定是常见的,但是很少有需要重写属性的情况。
    public abstract class MyClass
    {
        protected string myAttribute;
    
        public string MyAttribute
        {
            get { return myAttribute; }
            set { myAttribute = value; }
        }
    }
    
    public abstract class MyClass
    {
        public string MyAttribute { get; set; }
    }