Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
.NET temel sınıf kitaplıkları iki XML serileştiricisi sağlar: XmlSerializer ve DataContractSerializer. Bu ikisi arasında bazı küçük farklar vardır, ancak geçiş amacıyla bu bölüm yalnızca öğesine DataContractSerializerodaklanır. Neden?
tarafından BinaryFormatterkullanılan serileştirme programlama modelini tam olarak desteklediğinden. Olarak [Serializable] işaretlenmiş veya uygulanmış ISerializable olan tüm türler ile DataContractSerializerseri hale getirilebilir. Av nerede? Bilinen türler önceden belirtilmelidir. Bunları bilmeniz ve özel türlerTypealabilmeniz gerekir.
veya gibi stringDateTime en popüler koleksiyonları veya ilkel türleri belirtmek gerekmez (seri hale getiricinin kendi varsayılan izin verme listesi vardır), ancak gibi DateTimeOffsetözel durumlar vardır. Desteklenen türler hakkında daha fazla bilgi için bkz . Veri sözleşmesi seri hale getiricisi tarafından desteklenen türler.
Kısmi güven , .NET'e (Core) taşımamış bir .NET Framework özelliğidir. Kodunuz .NET Framework üzerinde çalışıyorsa ve bu özelliği kullanıyorsa, bu tür bir senaryo için geçerli olabilecek sınırlamalar hakkında bilgi edinin.
Adım adım geçiş
- tüm kullanımlarını
BinaryFormatterbulun. - Değişikliklerinizi doğrulayabilmeniz ve hatalardan kaçınabilmeniz için serileştirme kodu yollarının testlerle kapsandığından emin olun.
- .NET core kitaplıklarının bir parçası olarak
DataContractSerializerherhangi bir paket yüklemeniz gerekmez. - ile
BinaryFormatterseri hale getirilen tüm türleri bulun. Bunların hiçbirini değiştirmeniz gerekmez, ancak oluşturucununknownTypesbağımsız değişkeni aracılığıylaDataContractSerializerbunları listelemeniz gerekebilir. - öğesinin kullanımını
BinaryFormatterileDataContractSerializerdeğiştirin.
DataContractSerializer serializer = new(
type: input.GetType(),
knownTypes: new Type[]
{
typeof(MyType1),
typeof(MyType2)
});