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;
}
}
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é
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro