Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 必须使用私有访问权限声明字段。使用属性公开字段。_Asp.net_Stylecop - Fatal编程技术网

Asp.net 必须使用私有访问权限声明字段。使用属性公开字段。

Asp.net 必须使用私有访问权限声明字段。使用属性公开字段。,asp.net,stylecop,Asp.net,Stylecop,我总是收到stylecop的警告。从班级的角度来看,这是有道理的。字段应该是私有的,并使用属性公开字段 但是我有一个代码隐藏,我声明了一个控件,如下所示。这个警告毫无意义 /// <summary> /// Table used to generate the UI /// </summary> protected Table HighlightTable; // ///用于生成UI的表 /// 受保护的桌子高光桌; 我不想使我的控

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

但是我有一个代码隐藏,我声明了一个控件,如下所示。这个警告毫无意义

     /// <summary>
    /// Table used to generate the UI
    /// </summary>
    protected Table HighlightTable;
//
///用于生成UI的表
/// 
受保护的桌子高光桌;
我不想使我的控件具有私有或属性,并将其公开。它必须得到保护


请澄清一下。

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

protected
字段意味着继承者可以访问它,因此您可以中断封装类型公开内部状态。可以通过将字段转换为具有受限可见性的属性来解决此问题

protected Table HighlightTable {get; set;}
或者通过限制字段的可见性

private Table highlightTable;

有关其他观点,请参见类似的问题。

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

protected
字段意味着继承者可以访问它,因此您可以中断封装类型公开内部状态。可以通过将字段转换为具有受限可见性的属性来解决此问题

protected Table HighlightTable {get; set;}
或者通过限制字段的可见性

private Table highlightTable;

其他观点见类似问题。

我认为StyleCop是正确的。。。这个领域应该是私有的

为什么要将HighlightTable标记为受保护?您是否在派生类中使用它

如果您在Dervive类中没有使用它,那么它应该是私有的


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

我认为StyleCop是正确的。。。这个领域应该是私有的

为什么要将HighlightTable标记为受保护?您是否在派生类中使用它

如果您在Dervive类中没有使用它,那么它应该是私有的


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

为什么要将HighlightTable标记为受保护的?-OP没有,当您在.aspx标记中使用
runat=“server”
声明控件时,Visual Studio会自动执行此操作。啊,是的,我已经有一段时间没有处理WebForms了。。。那么@Netricity你会说VS在这里做了错事还是Stylecop太迂腐了?我注意到在你的另一条评论中,你提到了多个ASPX文件,所以也许Stylecop错了?VS可以通过创建自动实现的受保护属性而不是字段来改进。在旧版本的C#中,自动实现的属性不可用,因此会生成大量代码,所以可能这就是使用受保护字段的原因。另一方面,我认为Stylecop应该考虑这种行为。Stylecop是否可以配置为忽略.aspx.designer.cs文件中的此类字段?为什么将HighlightTable标记为受保护?-OP没有,当您在.aspx标记中使用
runat=“server”
声明控件时,Visual Studio会自动执行此操作。啊,是的,我已经有一段时间没有处理WebForms了。。。那么@Netricity你会说VS在这里做了错事还是Stylecop太迂腐了?我注意到在你的另一条评论中,你提到了多个ASPX文件,所以也许Stylecop错了?VS可以通过创建自动实现的受保护属性而不是字段来改进。在旧版本的C#中,自动实现的属性不可用,因此会生成大量代码,所以可能这就是使用受保护字段的原因。另一方面,我认为Stylecop应该考虑这种行为。Stylecop是否可以配置为忽略.aspx.designer.cs文件中的此类字段?您可以使用可以使用相同基类的替代.aspx文件,因此这些控制字段需要保护,而不是私有的,以便其他.aspx可以看到它们。我不同意这一点。没问题。在野外和孩子们接触并不是什么大不了的事。添加属性只是为了修复警告是一件愚蠢的事情。子类可能希望访问其所有字段。即使是继承的。通过将所有字段设置为私有,破坏了可重用性。不变量可以在子类中维护,如果您认为这不可能,很可能您有太复杂的不变量需要拆分。@mathk这只是人们采用的一个指导原则。维护遵循某些准则的代码更容易。stylecop中的指南建议使用属性或私有字段。您可以不同意这一点,并使用受保护的字段。代码仍然有效。问题是,现在你把这些指导方针都取消了。这对很多人来说不是什么大不了的事,但有些人确实很在乎。auto属性不会给代码添加太多内容,但其使用意图更为清晰。您可以使用其他可以使用相同基类的.aspx文件,因此这些控制字段需要保护,而不是私有,以便其他.aspx可以看到它们。我不同意这一点。没问题。在野外和孩子们接触并不是什么大不了的事。添加属性只是为了修复警告是一件愚蠢的事情。子类可能希望访问其所有字段。即使是继承的。通过将所有字段设置为私有,破坏了可重用性。不变量可以在子类中维护,如果您认为这不可能,很可能您有太复杂的不变量需要拆分。@mathk这只是人们采用的一个指导原则。维护遵循某些准则的代码更容易。stylecop中的指南建议使用属性或私有字段。您可以不同意这一点,并使用受保护的字段。代码仍然有效。问题是,现在你把这些指导方针都取消了。这对很多人来说不是什么大不了的事,但有些人确实很在乎。自动装置