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à