CA1413: Vyhněte se neveřejným polím v hodnotách viditelných modulem COM
TypeName |
AvoidNonpublicFieldsInComVisibleValueTypes |
CheckId |
CA1413 |
Kategorie |
Microsoft.interoperability |
Narušující změna |
Narušující |
Příčina
Typ hodnoty, který je výslovně označen jako viditelný pro model COM (Component Object Model) deklaruje pole neveřejné instance.
Popis pravidla
Neveřejné pole instance hodnotových typů viditelných modulům COM jsou viditelné klientům typu COM.Zkontrolujte obsah pole, zda neobsahují informace, které by neměly být vystaveny nebo které budou mít nežádoucí účinek na návrh nebo zabezpečení.
Standardně jsou všechny typy veřejné hodnoty viditelné modelu COM.Nicméně pro snížení falešných pozitiv, vyžaduje toto pravidlo explicitní uvedení viditelnosti typu, aby mohl viděn modelem COM.Obsažené sestavení musí být označeno ComVisibleAttribute nastaveno na false a typ musí být označen ComVisibleAttribute nastaven na true.
Jak vyřešit porušení
Pro napravení porušení tohoto pravidla a ponechání pole skrytým je zapotřebí změnit typ hodnoty na referenční typ nebo odstranit atribut ComVisibleAttribute z typu.
Kdy potlačit upozornění
Je bezpečné potlačit upozornění tohoto pravidla, pokud je veřejné zpřístupnění pole přijatelné.
Příklad
Následující příklad ukazuje typ, který toto pravidlo porušuje.
Imports System
Imports System.Runtime.InteropServices
<Assembly: ComVisibleAttribute(False)>
Namespace InteroperabilityLibrary
<ComVisibleAttribute(True)> _
Public Structure SomeStructure
Friend SomeInteger As Integer
End Structure
End Namespace
using System;
using System.Runtime.InteropServices;
[assembly: ComVisible(false)]
namespace InteroperabilityLibrary
{
[ComVisible(true)]
public struct SomeStruct
{
internal int SomeValue;
}
}
Související pravidla
CA1407: Vyhněte se statickým členům ve viditelných typech modelu COM
CA1017: Označte sestavení pomocí atributu ComVisibleAttribute
Viz také
Koncepty
Kvalifikace typů .NET pro spolupráci