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