Compartir a través de


CA1411: Los métodos de registro COM no deben ser visibles

Nombre de tipo

ComRegistrationMethodsShouldNotBeVisible

Identificador de comprobación

CA1411

Categoría

Microsoft.Interoperability

Cambio problemático

Motivo

Un método marcado con el atributo System.Runtime.InteropServices.ComRegisterFunctionAttribute o System.Runtime.InteropServices.ComUnregisterFunctionAttribute es visible externamente.

Descripción de la regla

Cuando un ensamblado se registra con el Modelo de objetos componentes (COM), se agregan entradas al Registro para cada tipo visible a través de COM en el ensamblado.Durante los procesos de registro y anulación de registro se llama a métodos marcados, respectivamente, con los atributos ComRegisterFunctionAttribute y ComUnregisterFunctionAttribute, para ejecutar el código de usuario específico del registro y la anulación de registro de estos tipos.No se debe llamar a este código fuera de estos procesos.

Cómo corregir infracciones

Para corregir una infracción de esta regla, cambie la accesibilidad del método a private o internal (Friend en Visual Basic).

Cuándo suprimir advertencias

No suprima las advertencias de esta regla.

Ejemplo

El siguiente ejemplo muestra dos métodos que infringen la regla.

Imports System
Imports System.Runtime.InteropServices

<Assembly: ComVisibleAttribute(True)>
Namespace InteroperabilityLibrary

   Public Class ClassToRegister
   End Class

   Public Class ComRegistration

      <ComRegisterFunctionAttribute> _ 
      Public Shared Sub RegisterFunction(typeToRegister As Type)
      End Sub

      <ComUnregisterFunctionAttribute> _ 
      Public Shared Sub UnregisterFunction(typeToRegister As Type)
      End Sub

   End Class

End Namespace
using System;
using System.Runtime.InteropServices;

[assembly: ComVisible(true)]
namespace InteroperabilityLibrary
{
   public class ClassToRegister
   {
   }

   public class ComRegistration
   {
      [ComRegisterFunction]
      public static void RegisterFunction(Type typeToRegister) {}

      [ComUnregisterFunction]
      public static void UnregisterFunction(Type typeToRegister) {}
   }
}

Reglas relacionadas

CA1410: Los métodos de registro COM se deben adjuntar

Vea también

Referencia

Regasm.exe (Herramienta de registro de ensamblados)

System.Runtime.InteropServices.RegistrationServices

Conceptos

Registrar ensamblados con COM