CA1413: evitar campos não públicos em tipos de valor visíveis COM
TypeName |
AvoidNonpublicFieldsInComVisibleValueTypes |
CheckId |
CA1413 |
Categoria |
Microsoft.Interoperability |
Alteração Significativa |
Quebra |
Causa
Um tipo de valor marcado como especificamente visível ao Component Object Model (COM) declara um campo público da instância.
Descrição da Regra
Os campos público da instância de tipo de valor COM- visíveis são visíveis aos clientes COM.Revise o conteúdo do campo para informações que não são expostos, ou que terá um design ou um efeito não intencional de segurança.
Por padrão, todos os tipos de valores de chaves pública são visíveis na.No entanto, para reduzir falsos positivos, essa regra requer a visibilidade de COM o tipo ser declarado explicitamente.O assembly contentor deve ser marcado com ComVisibleAttribute definido como false e o tipo deve ser marcado com ComVisibleAttribute definido como true.
Como Corrigir Violações
Para corrigir uma violação desta regra e manter o campo oculto, altere o tipo de valor em um tipo de referência ou remover o atributo de ComVisibleAttribute do tipo.
Quando Suprimir Alertas
É seguro suprimir um aviso dessa regra se a exposição pública do campo for aceitável.
Exemplo
O exemplo a seguir mostra um tipo que viola a regra.
Imports System
Imports System.Runtime.InteropServices
<Assembly: ComVisibleAttribute(False)>
Namespace InteroperabilityLibrary
<ComVisibleAttribute(True)> _
Public Structure SomeStructure
Friend SomeInteger As Integer
End Structure
End Namespace
using System;
using System.Runtime.InteropServices;
[assembly: ComVisible(false)]
namespace InteroperabilityLibrary
{
[ComVisible(true)]
public struct SomeStruct
{
internal int SomeValue;
}
}
Regras Relacionadas
CA1407: evitar membros estáticos em tipos visíveis COM
CA1017: marcar assemblies com ComVisibleAttribute
Consulte também
Conceitos
Qualificando tipos do .NET para interoperação