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 '. 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). Esses métodos não devem ser expostos. |
|
Quando os métodos sobrecarregados estão expostos a clientes COM, somente a primeira sobrecarga de método manterá seu nome. Sobrecargas subseqüentes são exclusivamente renomeadas anexando o nome de um caractere de sublinhado (_) e um número inteiro que corresponde à ordem de declaração de que a 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, o 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 chamada imediatamente anterior não é uma plataforma de invocação de método. |
|
CA1405: 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 para COM. |
CA1406: Evite argumentos de Int64 para os clientes Visual Basic 6 |
Clientes COM 6 de Visual Basic não podem acessar os inteiros de 64 bits. |
COM não oferece suporte a métodos estáticos. |
|
Tipos de uma interface dupla habilitam clientes vincular a um layout de interface específica. Quaisquer alterações em uma versão futura do layout do tipo ou quaisquer tipos base interromperá os clientes COM que vincule à interface. Por padrão, se o atributo ClassInterfaceAttribute não for especificado, uma interface somente de distribuição é usada. |
|
Um tipo de referência é 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 usando o System.Runtime.InteropServices.ComRegisterFunctionAttribute atributo mas não declara um método marcado usando a 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: Evitar os tipos de valor visível COM campos não públicos |
Campos de instância confidenciais visível em COM tipos de valor são visíveis para os clientes COM. Analise o conteúdo dos campos de informações que não deve ser exposta ou que terá efeitos indesejados de design ou de segurança. |
CA1414: Marcar os argumentos de P/Invoke booleanos com MarshalAs |
O tipo de dados booleano tem diversas representações em código não gerenciado. |
Esta regra examina para invocação de plataforma declarações de método destino Win32 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. |