CA1420 : La propriété, le type ou l’attribut nécessite un marshaling au moment de l’exécution

Propriété Value
Identificateur de la règle CA1420
Titre La propriété, le type ou l’attribut nécessite un marshaling au moment de l’exécution
Catégorie Interopérabilité
Le correctif est cassant ou non cassant Rupture
Activé par défaut dans .NET 8 Comme avertissement

Cause

Une fonctionnalité de code utilisée nécessite le marshaling du runtime, et le marshaling du runtime est explicitement désactivé.

Description de la règle

L’utilisation de fonctionnalités qui nécessitent le marshaling du runtime lorsque le marshaling du runtime est désactivé entraîne des exceptions d’exécution.

Comment corriger les violations

Activez le marshaling du runtime ou supprimez le code qui nécessite le marshaling du runtime.

Quand supprimer les avertissements

Ne supprimez aucun avertissement de cette règle.

Exemple

L’extrait de code suivant montre une violation de 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

Pour corriger la violation, supprimez l’élément DisableRuntimeMarshallingAttribute sur l’assembly.