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