Partager via


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

Mise à jour : novembre 2007

TypeName

ComRegistrationMethodsShouldNotBeVisible

CheckId

CA1411

Catégorie

Microsoft.Interoperability

Modification avec rupture

Oui

Cause

Une méthode marquée avec l'attribut System.Runtime.InteropServices.ComRegisterFunctionAttribute ou System.Runtime.InteropServices.ComUnregisterFunctionAttribute est visible de l'extérieur.

Description de la règle

Lorsqu'un assembly est enregistré avec COM, les entrées sont ajoutées au Registre pour chacun des types visibles par COM dans l'assembly. Les méthodes marquées avec les attributs ComRegisterFunctionAttribute et ComUnregisterFunctionAttribute sont appelées durant les processus d'inscription et d'annulation d'inscription, respectivement, pour exécuter le code utilisateur spécifique à l'inscription et l'annulation d'inscription de ces types. Ce code ne doit pas être appelé à l'extérieur de ces processus.

Comment corriger les violations

Pour corriger une violation de cette règle, affectez la valeur private ou internal à l'accessibilité de la méthode (Friend en Visual Basic).

Quand supprimer les avertissements

Ne supprimez aucun avertissement de cette règle.

Exemple

L'exemple suivant présente deux méthodes qui ne respectent pas la règle.

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

Règles connexes

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

Voir aussi

Concepts

Inscription d'assemblys dans COM

Référence

Outil Assembly Registration Tool (Regasm.exe)

System.Runtime.InteropServices.RegistrationServices