0

我总是从 stylecop 那里得到这个警告。从班级的角度来看,这是有道理的。字段应该是私有的并使用属性来公开字段

但我有一个代码隐藏,我在其中声明了一个控件,如下所示。这个警告没有意义。

     /// <summary>
    /// Table used to generate the UI
    /// </summary>
    protected Table HighlightTable;

我不想让我的控件具有私有或属性并公开它。它必须受到保护。

请澄清一下。

4

2 回答 2

2

这确实是有道理的,您不想将类型的内部暴露给其他子类型。

protected字段意味着它可以被继承者访问,因此你打破了封装——类型暴露了内部状态。您可以通过将您的字段转换为可见性受限的属性来解决此问题

protected Table HighlightTable {get; set;}

或通过限制字段的可见性

private Table highlightTable;

有关其他意见,请参见此处的类似问题。

于 2013-05-18T11:07:10.247 回答
1

我认为 StyleCop 是对的……该字段应该是私有的。

为什么将 HighlightTable 标记为受保护?你在派生类中用它做些什么吗?

如果您在派生类中没有对它做任何事情,它应该只是私有的。

如果您在派生类中使用它,正如 SyleCop 所说,您应该创建一个属性并将其标记受保护,并且您的字段应该是私有的。

于 2013-05-18T11:08:30.897 回答