Share via


CA1410 : Les méthodes d'inscription COM doivent être mises en correspondance

TypeName

ComRegistrationMethodsShouldBeMatched

CheckId

CA1410

Catégorie

Microsoft.Interoperability

Modification avec rupture

Modification sans rupture

Cause

Un type déclare une méthode marquée avec l'attribut System.Runtime.InteropServices.ComRegisterFunctionAttribute, mais ne déclare pas une méthode marquée avec l'attribut System.Runtime.InteropServices.ComUnregisterFunctionAttribute, ou vice-versa.

Description de la règle

Pour que les clients COM (Component Object Model) créent un type .NET Framework, le type doit d'abord être enregistré.Si elle est disponible, une méthode marquée avec l'attribut ComRegisterFunctionAttribute est appelée pendant le processus d'inscription pour exécuter le code spécifié par l'utilisateur.Une méthode correspondante marquée avec l'attribut ComUnregisterFunctionAttribute est appelée pendant le processus d'inscription pour inverser les opérations de la méthode d'inscription.

Comment corriger les violations

Pour corriger une violation de cette règle, ajoutez la méthode d'inscription ou d'annulation d'inscription correspondante.

Quand supprimer les avertissements

Ne supprimez aucun avertissement de cette règle.

Exemple

L'exemple suivant présente un type qui enfreint la règle.Le code commenté affiche le correctif de la violation.

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) {}
   }
}

Règles connexes

CA1411 : Les méthodes d'inscription COM ne doivent pas être visibles

Voir aussi

Référence

Regasm.exe (outil Assembly Registration Tool)

System.Runtime.InteropServices.RegistrationServices

Concepts

Inscription d'assemblys dans COM