Los campos de tipos de valor deben ser trasladables
Actualización: noviembre 2007
TypeName |
ValueTypeFieldsShouldBePortable |
Identificador de comprobación |
CA1900 |
Category |
Microsoft.Portability |
Cambio problemático |
Problemático: si se ve el campo fuera del ensamblado. No problemático: si no se ve el campo fuera del ensamblado. |
Motivo
Esta regla comprueba que las estructuras declaradas con un diseño explícito se alinearán correctamente cuando se calculen las referencias al código no administrado en plataformas de 64 bits. IA-64 no permite accesos a memoria no alineada y el proceso se bloqueará si no se corrige esta infracción.
Descripción de la regla
Las estructuras con diseño explícito que contienen campos no alineados provocan bloqueos en las plataformas de 64 bits.
Cómo corregir infracciones
Todos los campos que tengan menos de 8 bytes deben tener posiciones de desplazamiento que sean múltiplo de su tamaño, y los campos de 8 bytes o más deben tener posiciones de desplazamiento que sean múltiplo de 8. Otra solución es utilizar LayoutKind.Sequential en lugar de LayoutKind.Explicit, siempre que sea razonable.
Cuándo suprimir advertencias
Únicamente se debe suprimir esta advertencia si se produce por un error.