Compartilhar via


Evite campos não públicos em tipos de valor visível COM

TypeName

AvoidNonpublicFieldsInComVisibleValueTypes

CheckId

CA1413

Category (Categoria)

Microsoft.interoperabilidade

Quebrando alterar

Quebrando

Causa

Um tipo de valor que está marcado sistema autônomo visível para com. especificamente declara um campo de instância não-públicos.

Descrição da regra

Campos de instância público que não são de tipos de valor visível COM são visíveis para clientes COM.Analise o conteúdo do campo de informações que devem ser expostas ou terão impacto de design ou de segurança não intencional.

Por padrão, todos os tipos de valor público estão visíveis para COM.No entanto, para reduzir os falsos positivos, essa regra requer 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 o tipo deve ser com o ComVisibleAttribute definido como true.

Como corrigir violações

Para corrigir uma violação dessa regra e manter o campo ocultado, alterar o valor digite para um tipo de referência ou remover o ComVisibleAttribute atributo do tipo.

Quando suprimir avisos

É seguro eliminar um aviso essa regra se exposição pública do campo será 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

Evitar membros estático em tipos visíveis com.

Marcar assemblies com ComVisibleAttribute

Consulte também

Conceitos

Qualificação tipos .NET para interoperação

Outros recursos

Interoperação com Código Não-Gerenciado