CA1413 : Éviter les champs non publics dans les types valeur visibles par COMCA1413: Avoid non-public fields in COM visible value types

TypeNameTypeName AvoidNonpublicFieldsInComVisibleValueTypesAvoidNonpublicFieldsInComVisibleValueTypes
CheckIdCheckId CA1413CA1413
CategoryCategory Microsoft.InteroperabilityMicrosoft.Interoperability
Modification avec ruptureBreaking Change RuptureBreaking

CauseCause

Un type valeur qui est marqué spécifiquement comme visible pour COM Component Object Model () déclare un champ d’instance non publics.A value type that is specifically marked as visible to Component Object Model (COM) declares a nonpublic instance field.

Description de la règleRule Description

Les champs d'instance non publics des types valeur visibles par COM sont visibles par les clients COM.Nonpublic instance fields of COM-visible value types are visible to COM clients. Passez en revue le contenu du champ pour plus d’informations qui ne doivent pas être exposées, ou qui aura un effet de conception ou de sécurité involontaire.Review the content of the field for information that should not be exposed, or that will have an unintended design or security effect.

Par défaut, tous les types valeur publics sont visibles par COM.By default, all public value types are visible to COM. Toutefois, pour réduire les faux positifs, cette règle requiert la visibilité COM du type à être défini explicitement.However, to reduce false positives, this rule requires the COM visibility of the type to be explicitly stated. L’assembly conteneur doit être marqué avec le System.Runtime.InteropServices.ComVisibleAttribute la valeur false et le type doit être marqué avec le ComVisibleAttribute la valeur true.The containing assembly must be marked with the System.Runtime.InteropServices.ComVisibleAttribute set to false and the type must be marked with the ComVisibleAttribute set to true.

Comment corriger les violationsHow to Fix Violations

Pour corriger une violation de cette règle et garder le champ masqué, remplacez le type valeur à un type référence ou supprimez la ComVisibleAttribute attribut à partir du type.To fix a violation of this rule and keep the field hidden, change the value type to a reference type or remove the ComVisibleAttribute attribute from the type.

Quand supprimer les avertissementsWhen to Suppress Warnings

Il est possible de supprimer un avertissement de cette règle si l’exposition publique du champ est acceptable.It is safe to suppress a warning from this rule if public exposure of the field is acceptable.

ExempleExample

L’exemple suivant montre un type qui enfreint la règle.The following example shows a type that violates the rule.

using System;
using System.Runtime.InteropServices;

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

<Assembly: ComVisibleAttribute(False)>
Namespace InteroperabilityLibrary

   <ComVisibleAttribute(True)> _ 
   Public Structure SomeStructure

      Friend SomeInteger As Integer

   End Structure

End Namespace

CA1407 : Éviter les membres statiques dans les types visibles par COMCA1407: Avoid static members in COM visible types

CA1017 : Marquez les assemblys avec ComVisibleAttributeCA1017: Mark assemblies with ComVisibleAttribute

Voir aussiSee Also

Interopérabilité avec du Code non managé qualifier des Types .NET pour l’interopérabilitéInteroperating with Unmanaged Code Qualifying .NET Types for Interoperation