CA1411: Métodos de registro COM não devem 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 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 tipo COM visíveis no assembly. Os métodos 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 de um 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 para 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 ser correspondidos.
Consulte também
Referência
Regasm. exe (ferramenta de registro de Assembly)
System.Runtime.InteropServices.RegistrationServices