Compartilhar via


CA1406: evitar argumentos Int64 para clientes do Visual Basic 6

TypeName

AvoidInt64ArgumentsForVB6Clients

CheckId

CA1406

Categoria

Microsoft.Interoperability

Alteração Significativa

Quebra

Causa

Um tipo que é marcado como especificamente visível ao Component Object Model (COM) declara um membro que usa um argumento de Int64 .

Descrição da Regra

Os clientes do Visual Basic 6 COM não podem acessar inteiros de 64 bits.

Por padrão, os seguintes são visíveis à: os assemblies, tipos de chaves pública, membros públicos da instância do no utilitário, e todos os membros de tipos de valor públicos.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 para um parâmetro cujo valor sempre possa ser expresso como uma integrante de 32 bits, altere o tipo de parâmetro a Int32.Se o valor de parâmetro pode ser maior que pode ser expresso como uma integrante de 32 bits, altere o tipo de parâmetro a Decimal.Observe que Single e Double perdem a precisão em intervalos principais do tipo de dados de Int64 .Se o membro não deve ser visível para o, o marcará com ComVisibleAttribute definido como false.

Quando Suprimir Alertas

É seguro suprimir um aviso dessa regra se você tiver certeza de que os clientes do Visual Basic 6 COM não acessarão o tipo.

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 Class SomeClass

      Public Sub LongArgument(argument As Long)
      End Sub 

   End Class 

End Namespace
using System;
using System.Runtime.InteropServices;

[assembly: ComVisible(false)]
namespace InteroperabilityLibrary
{
   [ComVisible(true)]
   public class SomeClass
   {
      public void LongArgument(long argument) {} 
   }
}

Regras Relacionadas

CA1413: evitar campos não públicos em tipos de valor visíveis COM

CA1407: evitar membros estáticos em tipos visíveis COM

CA1017: marcar assemblies com ComVisibleAttribute

Consulte também

Referência

Tipo de dados Long (Visual Basic)

Outros recursos

Interoperação com código não gerenciado