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)