Partager via


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

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

Quand un assembly est enregistré avec le modèle COM (Component Object Model), des entrées sont ajoutées au registre pour chaque type COM visible 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

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

Voir aussi

Référence

Regasm.exe (outil Assembly Registration Tool)

System.Runtime.InteropServices.RegistrationServices

Concepts

Inscription d'assemblys dans COM