CA1413: Evitar los campos no públicos en tipos de valor visibles a través de COM

Elemento Valor
RuleId CA1413
Category Microsoft.Interoperability
Cambio importante Problemático

Causa

Un tipo de valor que se marca específicamente como visible para Component Object Model (COM) declara un campo de instancia no pública.

Descripción de la regla

Los campos de instancia no públicos de tipos de valor visibles para COM están visibles para los clientes COM. Revise el contenido de los campos para saber si hay información que no debería exponerse o que vaya a tener un efecto no deseado sobre la seguridad o el diseño.

De forma predeterminada, todos los tipos de valor público son visibles para COM. Sin embargo, para reducir los falsos positivos, esta regla requiere que se indique explícitamente la visibilidad COM del tipo. El ensamblado contenedor debe marcarse con System.Runtime.InteropServices.ComVisibleAttribute establecido en false y el tipo debe marcarse con ComVisibleAttribute establecido en true.

Cómo corregir infracciones

Para corregir una infracción de esta regla y mantener oculto el campo, cambie el tipo de valor por un tipo de referencia o quite el atributo ComVisibleAttribute del tipo.

Cuándo suprimir las advertencias

Es seguro suprimir una advertencia de esta regla si la exposición pública del campo es aceptable.

Ejemplo

En el ejemplo siguiente se muestra un tipo que infringe la regla.

using System;
using System.Runtime.InteropServices;

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

CA1407: Evitar los miembros estáticos en tipos visibles a través de COM

CA1017: Marcar los ensamblados con ComVisibleAttribute

Vea también