为什么FxCop会将受保护的成员视为公共抛出DoNotDeclareVisibleInstanceFields错误?我非常确定,受保护的成员是有效的代码设计。为什么FxCop将其视为公共保护?
1
A
回答
4
我不确定这是不是你的意思,但是一般来说,受保护的成员是类接口的一部分。
您不想公开成员变量,因为它们会使您的实现变得不灵活。受保护的成员变量会执行相同的操作,因为继承自您的类将依赖于它们,从而使您的实现变得不灵活。
阿萨夫
5
它告诉你不要声明在类之外可见的字段,即不是私有的。在这种情况下,它正确地将protected
修饰符识别为暴露类之外的成员,尽管仅限于派生类型。
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 ; }
}
}
}
相关问题
- 1. 公共保护是什么意思?
- 2. 为什么要保护CollectionView.CollectionChanged?
- 3. 为什么Joomla不使用私人,公共和受保护的关键字?
- 4. 为什么在Obejct类中有公共方法,它们可能受到保护?
- 5. 公共vs受保护
- 6. C++保护/公共重载
- 7. FxCop - CA1034错误 - 为什么?
- 8. 为什么要将基类中的受保护访问更改为派生类中的公共访问权限?
- 9. 为什么我不能访问其他类的公共变量?
- 10. 为什么FxCop将GC.KeepAlive()标记为违规?
- 11. 为什么Finalize应该被保护?
- 12. 为什么不能保护java主类?
- 13. 为什么会话[:USER_ID]自动保护
- 14. 公共私人和保护在objective-c
- 15. C++类(公共,私有和受保护)
- 16. 保护链接公共下载
- 17. 公共getter,带CodeDOM的受保护setter
- 18. 如何从公共视图中保护域名?
- 19. PHPExcel:文档在受保护视图中打开,公式为零
- 20. 为什么内联视图与其他视图不同?有什么用途将其命名为视图
- 21. 定义派生类时,为什么基类标记为“公共”?
- 22. 为什么一些公共DNS记录解析为127.0.01?
- 23. 为什么'公共事件EventHandler cccc'为空?
- 24. 为什么WKInterfacePicker会将其视为未声明的类型?
- 25. 为什么保护对于其他类中的其他类是私有的
- 26. 什么是保护Azure中的层信息为DDOS防护
- 27. 什么是没有公共私有或保护声明的变量?
- 28. 为什么抽象类的构造函数应该受到保护,而不是公共的?
- 29. 为什么我的PHP子类没有从父类获得公共和受保护的变量?
- 30. 为什么Enum构造函数不能具有受保护或公共访问修饰符