CA1411: I metodi di registrazione COM non devono essere visibili
TypeName |
ComRegistrationMethodsShouldNotBeVisible |
CheckId |
CA1411 |
Category |
Microsoft.Interoperability |
Breaking Change |
Breaking |
Causa
Un metodo contrassegnato con l'attributo System.Runtime.InteropServices.ComRegisterFunctionAttribute o System.Runtime.InteropServices.ComUnregisterFunctionAttribute è visibile esternamente.
Descrizione della regola
Quando un assembly viene registrato con COM (Component Object Model), vengono aggiunte voci al Registro di sistema per ciascun tipo visibile a COM presente nell'assembly.I metodi contrassegnati con gli attributi ComRegisterFunctionAttribute e ComUnregisterFunctionAttribute vengono chiamati rispettivamente durante i processi di registrazione e annullamento della registrazione, per eseguire il codice utente specifico di registrazione/annullamento della registrazione di tali tipi.Il codice non dovrebbe essere chiamato al di fuori di tali processi.
Come correggere le violazioni
Per correggere una violazione della regola, modificare l'accessibilità del metodo in private o internal (Friend in Visual Basic).
Esclusione di avvisi
Non escludere un avviso da questa regola.
Esempio
Nell'esempio riportato di seguito vengono illustrati due metodi che violano la regola.
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) {}
}
}
Regole correlate
CA1410: I metodi di registrazione COM devono corrispondere
Vedere anche
Riferimenti
Regasm.exe (strumento di registrazione di assembly)
System.Runtime.InteropServices.RegistrationServices