Métodos de inscrição COM devem estar visíveis
TypeName |
ComRegistrationMethodsShouldNotBeVisible |
CheckId |
CA1411 |
Category (Categoria) |
Microsoft.interoperabilidade |
Quebrando alterar |
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 COM é registrado, as entradas são adicionadas ao registro para cada um dos tipos COM visíveis no conjunto de módulos (assembly).Métodos marcados com o ComRegisterFunctionAttribute e ComUnregisterFunctionAttribute atributos são chamados durante os processos de inscrição e cancelamento de inscrição, respectivamente, para executar um código de usuário que é específico para o inscrição/cancelamento de inscrição desses tipos. Esse código não deve chamado fora desses processos.
Como corrigir violações
Para corrigir uma violação dessa alterar de regra a acessibilidade do método a ser private ou internal (Friend no 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
Métodos de inscrição COM devem ser correspondidos.