Megosztás a következőn keresztül:


CA1421: A metódus futásidejű rendezést használ a DisableRuntimeMarshallingAttribute alkalmazásakor

Tulajdonság Érték
Szabályazonosító CA1421
Cím A metódus futásidejű rendezést használ a DisableRuntimeMarshallingAttribute alkalmazásakor
Kategória Együttműködési lehetőség
A javítás kompatibilitástörő vagy nem törik Nem törés
Alapértelmezés szerint engedélyezve a .NET 10-ben Javaslatként

Ok

A metódus futásidejű rendezést használ, a futásidejű rendezés pedig kifejezetten le van tiltva.

Szabály leírása

Ha egy metódus futásidejű rendezést használ, amikor a futásidejű rendezés le van tiltva, az váratlan viselkedésbeli különbségeket okozhat futásidőben a típus natív elrendezésének eltérő elvárásai miatt.

Szabálysértések kijavítása

Engedélyezze a futásidejű rendezést, vagy használjon hasonló sizeof funkciókat és mutatókat a pontos eredmények érdekében.

Mikor kell letiltani a figyelmeztetéseket?

Ne tiltsa el a szabály figyelmeztetését.

Példa

A következő kódrészlet a CA1421 megsértését mutatja be:

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

[assembly: DisableRuntimeMarshalling]

class C
{
    public void Test()
    {
        nint offset = Marshal.OffsetOf(typeof(ValueType), "field");
    }
}

struct ValueType
{
    int field;
}

Imports System.Runtime.CompilerServices
Imports System.Runtime.InteropServices

<Assembly: DisableRuntimeMarshalling>

Class C
    Shared Sub S1()
        Dim offset As IntPtr = Marshal.OffsetOf(GetType(ValueType), "field")
    End Sub
End Class

Structure ValueType
    Dim field As Integer
End Structure

A szabálysértés kijavításához távolítsa el az DisableRuntimeMarshallingAttribute attribútumot a szerelvényen.