Condividi tramite


Evitare i campi non pubblici nei tipi di valori visibili a COM

Aggiornamento: novembre 2007

TypeName

AvoidNonpublicFieldsInComVisibleValueTypes

CheckId

CA1413

Categoria

Microsoft.Interoperability

Breaking Change

Breaking

Causa

Un tipo di valore specificatamente contrassegnato come visibile a COM dichiara un campo di istanza non pubblico.

Descrizione della regola

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

Per impostazione predefinita, tutti i tipi di valori pubblici sono visibili a COM. Per ridurre i falsi positivi, tuttavia, la regola richiede la visibilità COM del tipo da dichiarare esplicitamente; l'assembly che lo contiene deve essere contrassegnato dall'impostazione dell'oggetto System.Runtime.InteropServices.ComVisibleAttribute su false mentre il tipo deve essere contrassegnato dall'impostazione dell'oggetto ComVisibleAttribute su true.

Correzione di 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

Evitare i membri statici nei tipi visibili a COM

Contrassegnare gli assembly con ComVisibleAttribute

Vedere anche

Concetti

Qualificazione di tipi .NET per l'interoperabilità

Altre risorse

Interoperabilità con codice non gestito