Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
| 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.