Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
.NET knihovny základních tříd poskytují dva serializátory XML: XmlSerializer a DataContractSerializer. Mezi těmito dvěma jsou některé drobné rozdíly, ale pro účely migrace se tato část zaměřuje pouze na DataContractSerializer. Proč? Protože plně podporuje programovací model serializace, který byl používán BinaryFormatter. Všechny typy, které jsou již označeny jako [Serializable] nebo implementují ISerializable, lze serializovat pomocí DataContractSerializer. Kde je ten úlovek? Známé typy musí být zadány předem. Musíte je znát a umět získat Type, i pro privátní typy.
Není nutné zadávat nejoblíbenější kolekce nebo primitivní typy jako string nebo DateTime (serializátor má vlastní výchozí seznam povolených), ale existují výjimky jako DateTimeOffset. Další informace o podporovaných typech naleznete v části Typy podporované serializátorem kontraktů dat.
Částečná důvěryhodnost je funkce rozhraní .NET Framework, která nebyla portována do .NET (Core). Pokud váš kód běží v rozhraní .NET Framework a používá tuto funkci, přečtěte si o omezeních , která se můžou v takovém scénáři týkat.
Migrace krok za krokem
- Vyhledejte všechna použití
BinaryFormatter. - Ujistěte se, že jsou cesty kódu serializace pokryté testy, takže můžete ověřit změny a vyhnout se zavedení chyb.
- Nemusíte instalovat žádné balíčky, protože
DataContractSerializerjsou součástí knihoven .NET Core. - Vyhledejte všechny typy, které jsou serializovány pomocí
BinaryFormatter. Nemusíte je upravovat, ale možná je budete muset vypsat pomocíknownTypesargumentu konstruktoruDataContractSerializer. - Nahraďte použití parametrem
BinaryFormatterDataContractSerializer.
DataContractSerializer serializer = new(
type: input.GetType(),
knownTypes: new Type[]
{
typeof(MyType1),
typeof(MyType2)
});