Condividi tramite


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

Concetti

Registrazione di assembly presso COM