Los métodos de registro COM no deben ser visibles
Actualización: noviembre 2007
TypeName |
ComRegistrationMethodsShouldNotBeVisible |
Identificador de comprobación |
CA1411 |
Category |
Microsoft.Interoperability |
Cambio problemático |
Sí |
Un método marcado con el atributo System.Runtime.InteropServices.ComRegisterFunctionAttribute o System.Runtime.InteropServices.ComUnregisterFunctionAttribute es visible externamente.
Cuando se registra un ensamblado con COM, se agregan entradas al Registro para cada uno de los tipos visibles para COM del 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.
Para corregir una infracción de esta regla, cambie la accesibilidad del método a private o internal (Friend en Visual Basic).
No suprima las advertencias de esta regla.
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) {}
}
}
Los métodos de registro COM deben coincidir