Freigeben über


CA1411: Die COM-Registrierungsmethoden dürfen nicht sichtbar sein

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 bei COM (Component Object Model) registriert wird, werden der Registrierung für jeden für COM sichtbaren Typ in der Assembly Einträge 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.

Behandeln 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

CA1410: Die COM-Registrierungsmethoden müssen übereinstimmen

Siehe auch

Referenz

Regasm.exe (Assembly Registration-Tool)

System.Runtime.InteropServices.RegistrationServices

Konzepte

Registrieren von Assemblys mit COM