CA1051: Nedeklarujte viditelná pole instance
TypeName |
DoNotDeclareVisibleInstanceFields |
CheckId |
CA1051 |
Kategorie |
Microsoft.Design |
Narušující změna |
Narušující |
Příčina
Externě viditelný typ má pole instance externě viditelné.
Popis pravidla
Hlavní použití pole by mělo být jako podrobnost implementace.Pole by měla být private nebo internal a by měla být vystavena pomocí vlastností.Jak je snadný přístup k vlastnosti, tak je snadný přístup k poli, a kód v přístupových mechanismech vlastnosti se může změnit, jako funkce rozšíření typu bez zavedení změn rozdělení.Vlastnosti, které vracejí pouze hodnotu soukromého nebo interního pole, jsou optimalizovány pro provádění na stejné úrovni, jako je přístup k poli. Velmi malé zvýšení výkonu je spojeno s použitím externě viditelných polí přes vlastnosti.
Externě viditelné odkazují na úrovně přístupu public, protected, a protected internal (Public, Protected, a Protected Friend v jazyce Visual Basic).
Jak vyřešit porušení
Pro vyřešení porušení tohoto pravidla, je potřeba vytvořit pole private nebo internal a zpřístupnit jej pomocí externě viditelné vlastnosti.
Kdy potlačit upozornění
Nepotlačujte upozornění na toto pravidlo.Externě viditelná pole neposkytují žádné výhody, které nejsou k dispozici u vlastností.Navíc, veřejné pole nelze chránit pomocí Požadavky na odkaz.Viz téma CA2112: Zabezpečené typy by neměly vystavovat pole.
Příklad
Následující příklad ukazuje typ (BadPublicInstanceFields), který porušuje toto pravidlo.GoodPublicInstanceFields zobrazuje opravený kód.
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 ; }
}
}
}
Související pravidla
CA2112: Zabezpečené typy by neměly vystavovat pole