Avisos de interoperabilidade
Interação com clientes COM suportam a avisos de interoperabilidade.
Nesta seção
Regra |
Descrição |
---|---|
Um método público ou protegido é marcado, usando o atributo. DllImportAttribute.Ou a biblioteca não gerenciada não pôde ser localizada ou o método não pôde ser correspondido para uma função na biblioteca. |
|
Um método público ou protegido em um tipo público tem o atributo. DllImportAttribute (também é implementado da palavra-chave de declarar em Visual Basic).Tais métodos não devem ser expostos. |
|
Quando os métodos sobrecarregados estão expostos a clientes COM, apenas a primeira sobrecarga de método manterá seu nome.Sobrecargas subseqüentes são renomeadas exclusivamente por meio do acréscimo ao nome de um caractere de sublinhado (_) e um inteiro que corresponde à ordem de declaração da sobrecarga. |
|
CA1403: Tipos de layout automático não devem ser visível em COM |
Um tipo de valor visível em COM é marcado, usando o atributo System.Runtime.InteropServices.StructLayoutAttribute definido como LayoutKind.Auto.O layout desses tipos pode alterar entre versões do .NET Framework, que interromperá a clientes COM que esperam um layout específico. |
É feita uma chamada para o método Marshal.GetLastWin32Error ou o equivalente a Win32 função GetLastError e a chamada imediatamente anterior não é para uma plataforma de invocação de método. |
|
CA1405: A tipos base do tipo visível COM devem estar visível em COM |
Um visível em COM tipo deriva de um tipo que não é visível em COM. |
CA1406: Evitar Int64 argumentos para os clientes de 6 Visual Basic |
Clientes COM 6 de Visual Basic não podem acessar inteiros de 64 bits. |
COM não oferece suporte a métodos estáticos. |
|
Tipos que utilizam uma interface dual permitem que clientes vincular a um layout de interface específica.Qualquer alteração em uma versão futura no layout do tipo ou quaisquer tipos base interromperá os clientes COM que se vinculam à interface.Por padrão, se o atributo ClassInterfaceAttribute não for especificado, uma interface somente de distribuição é usada. |
|
Um tipo de referência que está marcado como visível para COM especificamente contém um construtor parametrizado público, mas não tem um construtor público padrão (sem parâmetros).Um tipo sem um construtor público padrão não é criado por clientes COM. |
|
Um tipo declara um método marcado com o uso do System.Runtime.InteropServices.ComRegisterFunctionAttribute atributo mas não declara um método marcado com o uso o System.Runtime.InteropServices.ComUnregisterFunctionAttribute atributo, ou vice-versa. |
|
Um método marcado com o atributo System.Runtime.InteropServices.ComRegisterFunctionAttribute ou o atributo System.Runtime.InteropServices.ComUnregisterFunctionAttribute é visível externamente. |
|
Um tipo é marcado, usando o atributo System.Runtime.InteropServices.ComSourceInterfacesAttribute, e pelo menos uma das interfaces especificadas não está marcado como usando o atributo System.Runtime.InteropServices.InterfaceTypeAttribute definido como ComInterfaceType.InterfaceIsIDispatch. |
|
CA1413: Evite campos não públicos em tipos de valor visível COM |
Campos de instância confidenciais visível em COM tipos de valor são visíveis para clientes COM.Analise o conteúdo dos campos para informações que não deve ser exposta ou que terá efeitos indesejados de design ou de segurança. |
CA1414: Marcar booleanos argumentos de P/Invoke com MarshalAs |
O tipo de dados Boolean possui diversas representações em código não gerenciado. |
Esta regra procurará declarações de método de invocação de plataforma destino Win32 as funções que têm um ponteiro para um OVERLAPPED estruturar o parâmetro e o parâmetro gerenciado correspondente não é um ponteiro para uma System.Threading.NativeOverlapped estrutura. |