Sdílet prostřednictvím


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

Další zdroje

Spolupráce s nespravovaným kódem