Freigeben über


COM-Registrierungsmethoden sollten nicht sichtbar sein

Aktualisiert: November 2007

     TypeName

ComRegistrationMethodsShouldNotBeVisible

CheckId

CA1411

Kategorie

Microsoft.Interoperability

Unterbrechende Änderung

Breaking

Ursache

Eine mit dem System.Runtime.InteropServices.ComRegisterFunctionAttribute-Attribut oder dem System.Runtime.InteropServices.ComUnregisterFunctionAttribute-Attribut markierte Methode ist extern sichtbar.

Regelbeschreibung

Wenn eine Assembly mit COM registriert ist, werden Einträge für jeden Typ, der für COM sichtbar ist, in der Assembly in der Registrierung hinzugefügt. Mit dem ComRegisterFunctionAttribute-Attribut und dem ComUnregisterFunctionAttribute-Attribut markierte Methoden werden während der Registrierung und der Aufhebung der Registrierung aufgerufen, um jeweils Benutzercode speziell für die Registrierung bzw. Aufhebung der Registrierung dieser Typen auszuführen. Dieser Code darf nicht außerhalb dieser Prozesse aufgerufen werden.

Behandlung von Verstößen

Um einen Verstoß gegen diese Regel zu beheben, ändern Sie den Zugriff der Methode auf private oder internal (Friend in Visual Basic).

Wann sollten Warnungen unterdrückt werden?

Unterdrücken Sie keine Warnung dieser Regel.

Beispiel

Im folgenden Beispiel werden zwei Methoden veranschaulicht, die gegen die Regel verstoßen.

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

Verwandte Regeln

COM-Registrierungsmethoden sollten übereinstimmen

Siehe auch

Konzepte

Registrieren von Assemblys mit COM

Referenz

Assembly Registration-Tool (Regasm.exe)

System.Runtime.InteropServices.RegistrationServices