다음을 통해 공유


DataContractSerializer(XML)로 마이그레이션합니다.

.NET 기본 클래스 라이브러리는 XmlSerializerDataContractSerializer라는 두 개의 XML serializer를 제공합니다. 이 두 항목 사이에는 몇 가지 미묘한 차이점이 있지만 마이그레이션을 위해 이 섹션에서는 DataContractSerializer에만 중점을 둡니다. 이유는 무엇입니까? BinaryFormatter에서 사용된 직렬화 프로그래밍 모델을 완전히 지원하므로 이미 [Serializable] 로 표시되거나 ISerializable 구현된 모든 형식은 DataContractSerializer으로 직렬화 할 수 있습니다. 캐치는 어디에 있습니까? 알려진 형식을 앞에 지정해야 합니다. 당신은 그들을 알고 Type에 대한 을 얻을 수 있어야 합니다.

가장 인기 있는 컬렉션 또는 기본 형식을 stringDateTime 지정하거나(직렬화에는 자체 기본 허용 목록이 있음) 필수는 아니지만 다음과 같은 DateTimeOffset예외가 있습니다. 지원되는 형식에 대한 자세한 내용은 데이터 계약 직렬화 에서 지원하는 형식을 참조하십시오.

부분 신뢰 는 .NET(Core)로 이식되지 않은 .NET Framework 기능입니다. 코드가 .NET Framework에서 실행되고 이 기능을 사용하는 경우 이러한 시나리오에 적용될 수 있는 제한 사항에 대해 읽어봅니다.

단계별 마이그레이션

  1. BinaryFormatter의 모든 사용 현황을 찾습니다.
  2. serialization 코드 경로에 테스트가 적용되어 있는지 확인하고, 변경 사항을 확인하며 버그 발생을 방지할 수 있도록 하세요.
  3. 마치 DataContractSerializer 이 .NET Core 라이브러리의 일부인 것처럼 패키지를 설치할 필요가 없습니다.
  4. BinaryFormatter을 사용하여 직렬화되는 모든 형식을 찾습니다. 수정할 필요는 없지만 이 knownTypes 생성자의 인수 DataContractSerializer 를 통해 나열해야 할 수도 있습니다.
  5. BinaryFormatter 의 사용량을 DataContractSerializer(으)로 교체합니다.
DataContractSerializer serializer = new(
    type: input.GetType(),
    knownTypes: new Type[]
    {
        typeof(MyType1),
        typeof(MyType2)
    });