Xamarin을 사용하여 모바일 크로스 플랫폼 게임 (iOS, Android, WP8)을 개발했습니다. & Xamarin. 높은 점수 및 기타 통계와 같은 데이터를 보유하고있는 PlayerData라는 클래스가 있습니다. XmlSerializer를 사용하여이 클래스를 작성하고 읽습니다. 게임을 출시 한 후 PlayerData의 기본 클래스를 변경하고 새 필드를 추가 한 다음 기존 필드를 제거한 다음 업데이트로 다시 릴리스합니다. XmlSerializer는 업데이트 된 PlayerData 클래스에 정확히 매핑되지 않은 이전 버전의 저장된 XML 데이터를 성공적으로 읽을 수 있습니까? 어떤 조건 하에서 실패 할까? 향후 프로젝트를 위해 더 나은 대안을 조언합니까?XmlSerializer가 얼마나 내재적입니까?
1
A
답변
0
XmlSerializer
자체는 거의 변경되지 않습니다. 속성을 클래스에 직렬화 할 수 없으면 데이터가 무시됩니다. PlayerData
버전 1.0에서 2.0으로 마이그레이션을 처리하는 방법은 사용자에게 달려 있습니다.
PlayerData
클래스에 버전 번호를 연결하는 것이 좋습니다. 이제 응용 프로그램이로드하려고 시도하는 PlayerData
의 버전을 추적 할 수 있습니다. 버전 1.0이고 2.0을 사용 중이라면 보관하려는 데이터가 포함 된 속성을 마이그레이션하는 논리를 작성해야합니다. 실제 마이그레이션을 수행하는 방법은 귀하에게 달려 있습니다.
예를 들어 업데이트 된 PlayerData
클래스를 출시 한 후이 마이그레이션을 구현하는 간단한 방법은 PlayerDataV1
이라는 또 다른 클래스를 만드는 것입니다. PlayerDataV1
은 PlayerData
과 같은 방식으로 설정하거나 심지어 PlayerData
을 상속받을 수 있습니다. 이제 프로필로드 중에 버전 1.0 프로필을이 클래스로 역 직렬화하여 PlayerDataV1
에서 작성한 마이그레이션 방법을 사용하여 새 클래스 구조로 마이그레이션 할 수 있습니다.