为什么FxCop将受保护视为公共?

时间:2009-10-20 06:15:17

标签: c#

为什么FxCop将受保护的成员视为公共投掷DoNotDeclareVisibleInstanceFields错误?我很确定受保护的成员是一个有效的代码设计。

3 个答案:

答案 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 ; }
      }
   }
}