Advertencias de interoperabilidad
Las advertencias de interoperabilidad son compatibles con la interacción con clientes COM.
En esta sección
Regla |
Descripción |
---|---|
Un método público o protegido se marca con el atributo System.Runtime.InteropServices.DllImportAttribute.No se pudo encontrar la biblioteca no administrada o el método no coincide con una función de la biblioteca. |
|
Un método público o protegido en un tipo público tiene el atributo System.Runtime.InteropServices.DllImportAttribute (también se implementa por la palabra clave Declare en Visual Basic).No se deberían exponer estos métodos. |
|
Cuando se exponen métodos sobrecargados a los clientes COM, sólo la primera sobrecarga de método conserva su nombre.Las sobrecargas subsiguientes reciben un nombre único resultante de anexar al nombre un carácter de subrayado (_) y un entero correspondiente al orden de declaración de la sobrecarga. |
|
CA1403: Los tipos de diseño automático no deben ser visibles para COM |
Un tipo de valor Visible a través de COM se marca con el atributo System.Runtime.InteropServices.StructLayoutAttribute establecido en LayoutKind.Auto.El diseño de estos tipos puede cambiar de una versión a otra de .NET Framework, lo que interrumpirá a los clientes COM que esperan un diseño concreto. |
CA1404: Llame a GetLastError inmediatamente después de P/Invoke |
Se llama al método Marshal.GetLastWin32Error o al equivalente de la función GetLastError de Win32 y la llamada inmediatamente anterior no se realiza a un método de invocación de plataforma. |
CA1405: Los tipos base de tipos visibles para COM deben ser visibles para COM |
Un tipo visible a través de COM se deriva de un tipo no visible a través de COM. |
Los clientes COM de Visual Basic 6 no pueden tener acceso a los enteros de 64 bits. |
|
COM no es compatible con métodos estáticos. |
|
Los tipos que utilizan una interfaz dual permiten a los clientes enlazarse a un diseño de interfaz concreto.Cualquier cambio que se introduzca en una versión futura en el diseño del tipo o en cualquier tipo base provocará un error en los clientes COM que están enlazados a la interfaz.De forma predeterminada, si no se especifica el atributo ClassInterfaceAttribute, se utiliza una interfaz solo de envío. |
|
Un tipo de referencia marcado específicamente como visible para COM contiene un constructor parametrizado público pero no contiene un constructor (sin parámetros) predeterminado público.Un tipo sin un constructor predeterminado público no se puede crear mediante clientes COM. |
|
Un tipo declara un método que se marca utilizando el atributo ComRegisterFunctionAttribute pero no declara ningún método marcado utilizando el atributo ComUnregisterFunctionAttribute o viceversa. |
|
Un método marcado con el atributo System.Runtime.InteropServices.ComRegisterFunctionAttribute o el atributo System.Runtime.InteropServices.ComUnregisterFunctionAttribute es visible externamente. |
|
Un tipo se marca con el atributo System.Runtime.InteropServices.ComSourceInterfacesAttribute y por lo menos una de las interfaces especificadas no se marca con el atributo System.Runtime.InteropServices.InterfaceTypeAttribute establecido en ComInterfaceType.InterfaceIsIDispatch. |
|
CA1413: Evite campos no públicos en tipos de valor visibles para COM |
Los campos de instancia no públicos de tipos de valor visibles para COM están visibles para los clientes COM.Revise el contenido de los campos para obtener información que no deba exponerse o que tendrá un impacto no deseado sobre la seguridad o el diseño. |
CA1414: Marque los argumentos P/Invoke booleanos con MarshalAs |
El tipo de datos Boolean tiene varias representaciones en el código no administrado. |
Esta regla busca declaraciones de método de invocación de plataforma dirigidas a funciones de Win32 que tengan un puntero a un parámetro de estructura OVERLAPPED y el parámetro administrado correspondiente no es un puntero para una estructura NativeOverlapped. |