CA1410: I metodi di registrazione COM devono corrispondere
TypeName |
ComRegistrationMethodsShouldBeMatched |
CheckId |
CA1410 |
Category |
Microsoft.Interoperability |
Breaking Change |
Non sostanziale |
Causa
Un tipo dichiara un metodo contrassegnato con l'attributo System.Runtime.InteropServices.ComRegisterFunctionAttribute ma non dichiara un metodo contrassegnato con l'attributo System.Runtime.InteropServices.ComUnregisterFunctionAttribute o viceversa.
Descrizione della regola
Per consentire la creazione di un tipo .NET Framework da parte dei client COM (Component Object Model), è necessario innanzitutto registrare il tipo. Se disponibile, durante il processo di registrazione viene chiamato un metodo contrassegnato con l'attributo ComRegisterFunctionAttribute per eseguire il codice specificato dall'utente. Un metodo corrispondente contrassegnato con l'attributo ComUnregisterFunctionAttribute viene chiamato durante il processo di annullamento della registrazione per invertire le operazioni del metodo di registrazione.
Come correggere le violazioni
Per correggere una violazione di questa regola, aggiungere il metodo di registrazione o di annullamento della registrazione corrispondente.
Esclusione di avvisi
Non escludere un avviso da questa regola.
Esempio
Nell'esempio riportato di seguito viene illustrato un tipo che viola la regola. Nel codice commentato viene riportata la correzione per la violazione.
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) {}
}
}
Regole correlate
CA1411: I metodi di registrazione COM non devono essere visibili
Vedere anche
Riferimenti
Regasm.exe (strumento di registrazione di assembly)
System.Runtime.InteropServices.RegistrationServices