Partilhar via


CA1411: Métodos de registro COM não deverá ser visíveis

TypeName

ComRegistrationMethodsShouldNotBeVisible

CheckId

CA1411

<strong>Categoria</strong>

Microsoft.Interoperability

Alteração significativa

Quebrando

Causa

Um método marcado com o System.Runtime.InteropServices.ComRegisterFunctionAttribute ou o System.Runtime.InteropServices.ComUnregisterFunctionAttribute atributo está visível externamente.

Descrição da regra

Quando um assembly é registrado com o modelo de objeto componente (COM), as entradas são adicionadas ao registro para cada visível em COM tipo no assembly.Métodos que são marcados com o ComRegisterFunctionAttribute e ComUnregisterFunctionAttribute atributos são chamados durante os processos de registro e cancelamento de registro, respectivamente, para executar o código do usuário que é específico para o registro/cancelamento de registro desses tipos.Esse código não deve ser chamado fora desses processos.

Como corrigir violações

Para corrigir uma violação desta regra, alterar a acessibilidade do método a ser private ou internal (Friend na Visual Basic).

Quando suprimir avisos

Não suprimir um aviso da regra.

Exemplo

O exemplo a seguir mostra dois métodos que violam a regra.

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) {}
   }
}

Regras relacionadas

CA1410: Métodos de registro COM devem ter correspondência

Consulte também

Referência

Regasm (ferramenta de registro de Assembly)

System.Runtime.InteropServices.RegistrationServices

Conceitos

Registrar Assemblies no COM