为什么FxCop将受保护的成员视为公共投掷DoNotDeclareVisibleInstanceFields错误?我很确定受保护的成员是一个有效的代码设计。
答案 0 :(得分:5)
它告诉你不要声明在课堂外可见的字段,即不是私有的字段。在这种情况下,它正确地将protected
修饰符识别为暴露类外的成员,尽管只是派生类型。
答案 1 :(得分:4)
我不确定这是不是你的意思,但一般而言,受保护的成员都是类界面的一部分。
您不需要公共成员变量,因为它们会使您的实施变得不灵活。受保护的成员变量执行相同的操作,因为从您继承的类将依赖于它们,从而使您的实现变得不灵活。
阿萨夫
答案 2 :(得分:0)
您看到的错误似乎是标记了外部可见的实例字段。这里建议的做法是将此字段设为私有,并通过外部可见属性(使用公共或受保护的访问修饰符)公开它。
错误的MSDN页面提供了一个很好的例子:
using System;
namespace DesignLibrary
{
public class BadPublicInstanceFields
{
// Violates rule DoNotDeclareVisibleInstanceFields.
public int instanceData = 32;
}
public class GoodPublicInstanceFields
{
private int instanceData = 32;
public int InstanceData
{
get { return instanceData; }
set { instanceData = value ; }
}
}
}