Sdílet prostřednictvím


CA1413: Nepoužívejte neveřejné pole zobrazena hodnota typů 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 System.Runtime.InteropServices.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: Vyhnout se statickým členům v viditelné typy modelu COM

CA1017: Značka sestav s ComVisibleAttribute

Viz také

Koncepty

Kvalifikační.Typy sítí pro součinnost

Další zdroje

Spolupráce s nespravovaným kódem.