Los métodos de registro COM deben coincidir
Actualización: noviembre 2007
TypeName |
ComRegistrationMethodsShouldBeMatched |
Identificador de comprobación |
CA1410 |
Category |
Microsoft.Interoperability |
Cambio problemático |
No problemático |
Motivo
Un tipo declara un método marcado con el atributo System.Runtime.InteropServices.ComRegisterFunctionAttribute pero no declara un método marcado con el atributo System.Runtime.InteropServices.ComUnregisterFunctionAttribute, o viceversa.
Descripción de la regla
Para que los clientes COM creen un tipo de .NET Framework, el tipo se debe registrar primero. Si está disponible, se llama a un método marcado con el atributo ComRegisterFunctionAttribute durante el proceso del registro para ejecutar código especificado por el usuario. Se llama a un método correspondiente marcado con el atributo ComUnregisterFunctionAttribute durante el proceso del anulación del registro, para invertir las operaciones del método de registro.
Cómo corregir infracciones
Para corregir una infracción de esta regla, agregue el método de registro o anulación de registro correspondiente.
Cuándo suprimir advertencias
No suprima las advertencias de esta regla.
Ejemplo
El siguiente ejemplo muestra un tipo que infringe la regla. El código marcado como comentario muestra la corrección para la infracción.
Imports System
Imports System.Runtime.InteropServices
<Assembly: ComVisibleAttribute(True)>
Namespace InteroperabilityLibrary
Public Class ClassToRegister
End Class
Public Class ComRegistration
<ComRegisterFunctionAttribute> _
Friend Shared Sub RegisterFunction(typeToRegister As Type)
End Sub
' <ComUnregisterFunctionAttribute> _
' Friend 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]
internal static void RegisterFunction(Type typeToRegister) {}
// [ComUnregisterFunction]
// internal static void UnregisterFunction(Type typeToRegister) {}
}
}
Reglas relacionadas
Los métodos de registro COM no deben ser visibles