CA1413: Evitar os tipos de valor visível COM campos não públicos
TypeName |
AvoidNonpublicFieldsInComVisibleValueTypes |
CheckId |
CA1413 |
<strong>Categoria</strong> |
Microsoft.Interoperability |
Alteração significativa |
Quebrando |
Causa
Um tipo de valor que está marcado como visível para o modelo de objeto componente (COM) especificamente declara um campo de instância confidenciais.
Descrição da regra
Campos de instância confidenciais visível em COM tipos de valor são visíveis para os clientes COM. Analise o conteúdo do campo para informações que não deve ser exposta ou que terá um efeito não intencional de design ou de segurança.
Por padrão, todos os tipos de valor público são visíveis para com. No entanto, para reduzir os falsos positivos, esta regra exige a visibilidade de COM do tipo a ser declarado explicitamente. O assembly contendo deve ser marcado com o System.Runtime.InteropServices.ComVisibleAttribute definido como false e o tipo deve ser marcado com o ComVisibleAttribute definido como true.
Como corrigir violações
Para corrigir uma violação desta regra e manter o campo ocultado, altere o tipo de valor para um tipo de referência ou remover o ComVisibleAttribute atributo do tipo.
Quando suprimir avisos
É seguro eliminar um aviso esta regra se exposição pública do campo é 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: Evite membros estáticos em tipos de visíveis COM
CA1017: Assemblies de marca com ComVisibleAttribute
Consulte também
Conceitos
Qualificação.NET tipos de interoperação