Condividi tramite


CA1413: Evitare i campi non pubblici nei tipi valore visibili a COM

TypeName

AvoidNonpublicFieldsInComVisibleValueTypes

CheckId

CA1413

Category

Microsoft.Interoperability

Breaking Change

Breaking

Causa

Un tipo di valore specificatamente contrassegnato come visibile a COM (Component Object Model) dichiara un campo di istanza non pubblico.

Descrizione della regola

I campi di istanza non pubblici di tipi di valori visibili a COM sono visibili ai client COM.Esaminare il contenuto del campo alla ricerca di informazioni che non devono essere esposte o che avranno un impatto non previsto sulla progettazione o la sicurezza.

Per impostazione predefinita, tutti i tipi di valori pubblici sono visibili a COM.Per ridurre i falsi positivi, tuttavia, la regola richiede che la visibilità COM del tipo sia dichiarata esplicitamente.È necessario che l'assembly contenitore sia contrassegnato con ComVisibleAttribute impostato su false e che il tipo sia contrassegnato con ComVisibleAttribute impostato su true.

Come correggere le violazioni

Per correggere una violazione di questa regola e mantenere il campo nascosto, modificare il tipo di valore in un tipo di riferimento oppure rimuovere l'attributo ComVisibleAttribute dal tipo.

Esclusione di avvisi

L'esclusione di un avviso da questa regola è sicura se l'esposizione pubblica del campo è accettabile.

Esempio

Nell'esempio riportato di seguito viene illustrato un tipo che viola la regola.

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;
   }
}

Regole correlate

CA1407: Evitare i membri statici nei tipi visibili a COM

CA1017: Contrassegnare gli assembly con ComVisibleAttribute

Vedere anche

Concetti

Qualificazione di tipi .NET per l'interoperabilità

Altre risorse

Interoperabilità con codice non gestito