Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
API berikut usang, mulai dari .NET 8. Memanggilnya dalam kode menghasilkan peringatan SYSLIB0050 pada waktu kompilasi.
- 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)
Solusi Sementara
Jika Anda menggunakan FormatterServices.GetUninitializedObject(Type), gunakan RuntimeHelpers.GetUninitializedObject(Type) sebagai gantinya.
Jika Anda mengompilasi silang untuk .NET Framework dan .NET modern, Anda dapat menggunakan
#ifpernyataan untuk secara selektif memanggil API yang sesuai, seperti yang ditunjukkan dalam cuplikan berikut.Type typeToInstantiate; #if NET5_0_OR_GREATER object obj = System.Runtime.CompilerServices.RuntimeHelpers.GetUninitializedObject(typeToInstantiate); #else object obj = System.Runtime.Serialization.FormatterServices.GetUninitializedObject(typeToInstantiate); #endifJika Anda menulis pustaka serialisasi, kami sangat menyarankan untuk melawan pustaka serialisasi yang mendukung infrastruktur serialisasi warisan (
[Serializable]danISerializable). Pustaka serialisasi modern harus memiliki kebijakan berdasarkan API publik jenis daripada detail implementasi privatnya. Jika Anda mendasarkan serializer pada detail implementasi ini dan sangat mengikatnya keISerializabledan mekanisme lain yang mendorong penyematan nama jenis dalam payload serial, itu dapat menyebabkan masalah yang dijelaskan dalam Risiko deserialisasi dalam penggunaan BinaryFormatter dan jenis terkait.Jika pustaka serialisasi Anda harus tetap kompatibel dengan infrastruktur serialisasi warisan, Anda dapat dengan mudah menekan kelalaian API serialisasi warisan.
Menyembunyikan peringatan
Jika Anda harus menggunakan API usang, Anda dapat menekan peringatan dalam kode atau dalam file proyek Anda.
Untuk menekan hanya satu pelanggaran, tambahkan direktif praprosedur ke file sumber Anda untuk menonaktifkan lalu mengaktifkan kembali peringatan.
// Disable the warning.
#pragma warning disable SYSLIB0050
// Code that uses obsolete API.
// ...
// Re-enable the warning.
#pragma warning restore SYSLIB0050
Untuk menekan semua SYSLIB0050 peringatan dalam proyek Anda, tambahkan <NoWarn> properti ke file proyek Anda.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
...
<NoWarn>$(NoWarn);SYSLIB0050</NoWarn>
</PropertyGroup>
</Project>
Untuk informasi selengkapnya, lihat Menyembunyikan peringatan.