Compartilhar via


Evitar Int64 argumentos para os clientes do Visual Basic 6

TypeName

AvoidInt64ArgumentsForVB6Clients

CheckId

CA1406

Category (Categoria)

Microsoft.interoperabilidade

Quebrando alterar

Quebrando

Causa

Um tipo que está marcado sistema autônomo visível para com. especificamente declara um membro que leva um System.Int64 argumento.

Descrição da regra

Clientes COM do Visual Basic 6 não é possível acesso inteiros de 64 bit.

Por padrão, é visível para COM o seguinte: assemblies, tipos públicos, os membros de instância pública em tipos públicos e todos os membros de tipos de valor público.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 para um parâmetro cujo valor sempre pode ser expresso sistema autônomo um inteiro de 32 bit, alterar o tipo de parâmetro para System.Int32. Se o valor do parâmetro pode ser maior do que pode ser expresso sistema autônomo um inteiro de 32 bit, altere o tipo de parâmetro para System.Decimal. Observe que ambos os System.Single e System.Double perder precisão em intervalos superiores da Int64 tipo de dados. Se o membro não deve ser visível para com., marcá-lo com o ComVisibleAttribute conjunto para false.

Quando suprimir avisos

É seguro eliminar um aviso essa regra se ele for certo de que os clientes COM do Visual Basic 6 não irá acesso 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

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

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

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