Freigeben über


CA1410: Die COM-Registrierungsmethoden müssen übereinstimmen

TypeName

ComRegistrationMethodsShouldBeMatched

CheckId

CA1410

Kategorie

Microsoft.Interoperability

Unterbrechende Änderung

Nicht unterbrechend

Ursache

Ein Typ deklariert eine mit dem System.Runtime.InteropServices.ComRegisterFunctionAttribute-Attribut markierte Methode, jedoch keine mit dem System.Runtime.InteropServices.ComUnregisterFunctionAttribute-Attribut markierte Methode oder umgekehrt.

Regelbeschreibung

Damit Component Object Model (COM)-Clients einen .NET Framework-Typ erstellen kann, muss der Typ zuerst registriert werden. Falls verfügbar, wird während des Registrierungsprozesses eine mit dem ComRegisterFunctionAttribute-Attribut markierte Methode aufgerufen, um benutzerdefinierten Code auszuführen. Beim Aufheben der Registrierung wird eine entsprechende, mit dem ComUnregisterFunctionAttribute-Attribut markierte Methode aufgerufen, um die Operationen der Registrierungsmethode umzukehren.

Behandeln von Verstößen

Um einen Verstoß gegen diese Regel zu beheben, fügen Sie die entsprechende Methode für die Registrierung oder das Aufheben der Registrierung hinzu.

Wann sollten Warnungen unterdrückt werden?

Unterdrücken Sie keine Warnung dieser Regel.

Beispiel

Im folgenden Beispiel wird ein Typ veranschaulicht, der gegen die Regel verstößt. Der kommentierte Code zeigt, wie der Verstoß behoben wird.

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

Verwandte Regeln

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

Siehe auch

Referenz

Regasm.exe (Assembly Registration-Tool)

System.Runtime.InteropServices.RegistrationServices

Konzepte

Registrieren von Assemblys mit COM