CA1413: Vyhněte se neveřejným polím v hodnotách viditelných modulem COM

Zboží Hodnota
RuleId CA1413
Kategorie Microsoft.Interoperability
Změna způsobující chybu Narušující

Příčina

Typ hodnoty, který je výslovně označen jako viditelný pro model COM (Component Object Model) deklaruje nepublikované pole instance.

Popis pravidla

Neveřejná pole instancí hodnotových typů viditelných moduly COM jsou viditelná klientům typu COM. Zkontrolujte obsah pole, kde najdete informace, které by neměly být vystaveny nebo které budou mít nezamýšlený návrh nebo účinek zabezpečení.

Ve výchozím nastavení jsou všechny veřejné typy hodnot viditelné pro com. Aby se však snížil počet falešně pozitivních výsledků, vyžaduje toto pravidlo, aby byla explicitně uvedena viditelnost modelu COM typu. Obsahující sestavení musí být označeno nastavenou System.Runtime.InteropServices.ComVisibleAttribute sadou false a typ musí být označen nastaveným parametrem ComVisibleAttributetrue.

Jak opravit porušení

Chcete-li opravit porušení tohoto pravidla a ponechat pole skryté, změňte typ hodnoty na typ odkazu nebo odeberte ComVisibleAttribute atribut z typu.

Kdy potlačit upozornění

Pokud je veřejná expozice pole přijatelná, je bezpečné potlačit upozornění z tohoto pravidla.

Příklad

Následující příklad ukazuje typ, který porušuje pravidlo.

using System;
using System.Runtime.InteropServices;

[assembly: ComVisible(false)]
namespace InteroperabilityLibrary
{
   [ComVisible(true)]
   public struct SomeStruct
   {
      internal int SomeValue;
   }
}

CA1407: Vyhněte se statickým členům ve viditelných typech modelu COM

CA1017: Označte sestavení pomocí atributu ComVisibleAttribute

Viz také