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.
A következő API-k elavultak, a .NET 8-tól kezdve. A kódban való meghívás figyelmeztetést SYSLIB0050 generál fordításkor.
- System.Runtime.Serialization.FormatterConverter
- System.Runtime.Serialization.FormatterServices
- System.Runtime.Serialization.IFormatterConverter
- System.Runtime.Serialization.IObjectReference
- System.Runtime.Serialization.ISafeSerializationData
- System.Runtime.Serialization.ISerializationSurrogate
- System.Runtime.Serialization.ISurrogateSelector
- System.Runtime.Serialization.ObjectIDGenerator
- System.Runtime.Serialization.ObjectManager
- System.Runtime.Serialization.SafeSerializationEventArgs
- System.Runtime.Serialization.SerializationObjectManager
- System.Runtime.Serialization.StreamingContextStates
- System.Runtime.Serialization.SurrogateSelector
- System.Runtime.Serialization.Formatters.FormatterAssemblyStyle
- System.Runtime.Serialization.Formatters.FormatterTypeStyle
- System.Runtime.Serialization.Formatters.IFieldInfo
- System.Runtime.Serialization.Formatters.TypeFilterLevel
- System.Type.IsSerializable
- System.Reflection.FieldAttributes.NotSerialized
- System.Reflection.FieldInfo.IsNotSerialized
- System.Reflection.TypeAttributes.Serializable
- System.Runtime.Serialization.ISerializable.GetObjectData(SerializationInfo, StreamingContext)
- SerializationInfo(Type, IFormatterConverter, Boolean)
- SerializationInfo(Type, IFormatterConverter)
- StreamingContext(StreamingContextStates, Object)
- StreamingContext(StreamingContextStates)
Áthidaló megoldás
Ha használta FormatterServices.GetUninitializedObject(Type), használja RuntimeHelpers.GetUninitializedObject(Type) helyette.
Ha .NET-keretrendszer és modern .NET-hez fordít keresztfordítást, egy
#ifutasítással szelektíven hívhatja meg a megfelelő API-t, ahogyan az alábbi kódrészletben látható.Type typeToInstantiate; #if NET5_0_OR_GREATER object obj = System.Runtime.CompilerServices.RuntimeHelpers.GetUninitializedObject(typeToInstantiate); #else object obj = System.Runtime.Serialization.FormatterServices.GetUninitializedObject(typeToInstantiate); #endifSzerializálási kódtár írása esetén erősen ajánlott az örökölt szerializálási infrastruktúrát (
[Serializable]ésISerializable) támogató szerializálási kódtárak ellen. A modern szerializálási kódtáraknak a privát implementáció részletei helyett egy típus nyilvános API-ján alapuló szabályzattal kell rendelkezniük. Ha ezekre a megvalósítási részletekre alapoz egy szerializálót, és erősen összekapcsolja aISerializableszerializált hasznos adatba ágyazott típusneveket ösztönző más mechanizmusokkal, az a BinaryFormatter és a kapcsolódó típusok deszerializálási kockázataival kapcsolatos problémákhoz vezethet.Ha a szerializálási kódtárnak kompatibilisnek kell maradnia az örökölt szerializálási infrastruktúrával, egyszerűen letilthatja az örökölt szerializálási API-elavulásokat.
Figyelmeztetés mellőzése
Ha az elavult API-kat kell használnia, letilthatja a figyelmeztetést a kódban vagy a projektfájlban.
Ha csak egyetlen szabálysértést szeretne letiltani, adjon hozzá előfeldolgozási irányelveket a forrásfájlhoz, hogy letiltsa, majd engedélyezze újra a figyelmeztetést.
// Disable the warning.
#pragma warning disable SYSLIB0050
// Code that uses obsolete API.
// ...
// Re-enable the warning.
#pragma warning restore SYSLIB0050
Ha el szeretné tiltani a SYSLIB0050 projekt összes figyelmeztetését, adjon hozzá egy tulajdonságot <NoWarn> a projektfájlhoz.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
...
<NoWarn>$(NoWarn);SYSLIB0050</NoWarn>
</PropertyGroup>
</Project>
További információ: Figyelmeztetések mellőzése.