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)