Condividi tramite


I metodi di registrazione COM non devono essere visibili

Aggiornamento: novembre 2007

TypeName

ComRegistrationMethodsShouldNotBeVisible

CheckId

CA1411

Categoria

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, vengono aggiunte voci al Registro di sistema per ciascuno dei tipi visibili a COM presenti 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.

Correzione delle 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

I metodi di registrazione COM devono corrispondere

Vedere anche

Concetti

Registrazione di assembly presso COM

Riferimenti

Strumento di registrazione degli assembly (Regasm.exe)

System.Runtime.InteropServices.RegistrationServices