CA1420: La propiedad, el tipo o el atributo requiere serialización en tiempo de ejecución

Propiedad Value
Identificador de la regla CA1420
Título La propiedad, el tipo o el atributo requiere marshalling en tiempo de ejecución
Categoría Interoperabilidad
La corrección es problemática o no problemática Problemático
Habilitado de forma predeterminada en .NET 8 Como advertencia

Causa

Se usa una característica de código que requiere serialización en tiempo de ejecución, y la serialización en tiempo de ejecución está deshabilitada explícitamente.

Descripción de la regla

El uso de características que requieren serialización en tiempo de ejecución cuando la serialización en tiempo de ejecución está deshabilitada producirá excepciones en tiempo de ejecución.

Cómo corregir infracciones

Habilite la serialización en tiempo de ejecución o quite el código que requiere serialización en tiempo de ejecución.

Cuándo suprimir las advertencias

No suprima las advertencias de esta regla.

Ejemplo

El siguiente fragmento de código muestra una infracción de la regla CA1420:

using System.Runtime.InteropServices;
using System.Runtime.CompilerServices;

[assembly: DisableRuntimeMarshalling]

class C
{
    // Violates rule CA1420.
    [DllImport("NativeLibrary", SetLastError = true)]
    public static extern void MyMethod ();
}
Imports System.Runtime.InteropServices
Imports System.Runtime.CompilerServices

<Assembly: DisableRuntimeMarshalling>

Class C
    ' Violates rule CA1420.
    <DllImport("NativeLibrary", SetLastError:=True)>
    Public Shared Sub MyMethod()
        '...
    End Sub
End Class

Para corregir la infracción, quite DisableRuntimeMarshallingAttribute del ensamblado.