我总是从stylecop得到这个警告。这从课堂观点来看是有道理的。字段应该是私有的,并使用属性来公开字段
但我有一个代码隐藏,我已声明如下控件。这个警告没有意义。
/// <summary>
/// Table used to generate the UI
/// </summary>
protected Table HighlightTable;
我不想让我的控件具有私有或属性并将其暴露。它必须受到保护。
请稍微澄清一下。答案 0 :(得分:2)
确实有意义,您不希望将该类型的内部暴露给其他子类型。
protected
字段表示继承者可以访问它,因此您打破封装 - 类型暴露内部状态。您可以通过将字段转换为具有受限可见性的属性来解决此问题
protected Table HighlightTable {get; set;}
或限制字段的可见性
private Table highlightTable;
有关其他意见,请参阅类似问题here。
答案 1 :(得分:1)
我认为StyleCop是对的......该字段应该是私有的。
为什么将HighlightTable标记为受保护?你是否在派生类中使用它做什么?
如果你没有在一个衍生课程中做任何事情,它应该是私人的。
如果您在派生类中使用它,正如SyleCop所说,您应该创建一个属性并将 标记为受保护,并且您的字段应该是私有的。