爲什麼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. 爲什麼公共私人保護如此重要?
- 3. 爲什麼要保護CollectionView.CollectionChanged?
- 4. FxCop - CA1034錯誤 - 爲什麼?
- 5. 爲什麼在Obejct類中有公共方法,它們可能受到保護?
- 6. C++爲什麼要使用公共,私有或受保護的繼承?
- 7. 爲什麼Joomla不使用私人,公共和受保護的關鍵字?
- 8. C++保護/公共重載
- 9. 公共vs受保護
- 10. 爲什麼要將基類中的受保護訪問更改爲派生類中的公共訪問權限?
- 11. 什麼是更好的:與公共/保護接口或玩耍?
- 12. 爲什麼java.awt.Dimension具有公共變量?
- 13. 爲什麼公共靜態類的類
- 14. 爲什麼我不能訪問其他類的公共變量?
- 15. 爲什麼Java文件必須與其公共類相同?
- 16. 將表格作爲參考並將其稱爲公共子
- 17. 爲什麼FxCop將GC.KeepAlive()標記爲違規?
- 18. 爲什麼會話[:USER_ID]自動保護
- 19. 爲什麼FrameworkElement.VisualChildrenCount受到保護?
- 20. 爲什麼不能保護java主類?
- 21. 爲什麼FluentNHibernate.Cfg.Db.Create受到內部保護?
- 22. 爲什麼Finalize應該被保護?
- 23. 爲什麼DataGridViewRowCollection.DataGridView屬性受保護?
- 24. 爲什麼保護不會保護這個班級的成員?
- 25. 保護公共API(不需要註冊)
- 26. 公共私人和保護在objective-c
- 27. C++類(公共,私有和受保護)
- 28. 保護鏈接公共下載
- 29. 保護共享用戶的公式
- 30. 公共getter,帶CodeDOM的受保護setter