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