Condividi tramite


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

Concetti

Registrazione di assembly presso COM