나는 추상 Node
클래스를 상속받은 클래스로 구성된 트리 구조를 구축하는 프로그램을 작성 중이다. 내 프로그램에는 여러 가지 유형의 노드가 내장되어 있습니다. 그러나 고급 사용자가 내 라이브러리를 참조하고 자신의 파생어 인 Node
을 작성할 수 있도록 허용하려고합니다. 이 플러그 - 인 라이브러리는 내 앱이 Assembly.Load()
으로 시작될 때로드됩니다. 따라서 내 응용 프로그램에서 사용하는 모든 잠재적 인 Node
유형은 런타임까지 알 수 없습니다.공개 API에 사용할 XML serialization 메서드는 무엇입니까?
또한이 트리를 XML 파일과 직렬화 및 비 직렬화 할 수 있기를 원합니다. XMLSerializer, DataContractSerializer 및 IXmlSerializable 구현에 대한 경험이 있습니다. 일반적으로 DataContractSerializer는 IXmlSerializable을 구현하는 코드가 적기 때문에 필요하며 XmlSerializer가 사용할 수없는 개인 필드를 serialize 할 수 있습니다.
그러나이 프로젝트를 통해 나는 다른 사용자가 내 수업에서 파생 된 수업을 만들 것이라는 점도 고려해야하며 수업을 직렬화하는 데 필요한 코드 나 속성도 추가해야한다고 생각해야합니다.
여기에는 하나의 직렬화 메커니즘을 다른 직렬화 메커니즘과 함께 사용해야하는 이유가 있습니까?
예 내 프로그램이 아닌 다른 프로그램이이 파일을 serialize/deserialize해야하는 이유가 표시되지 않으며 앞으로는 다른 serialization 형식 (예 : 바이너리)을 허용한다는 생각을 좋아합니다. –
분명히하기 위해 "binary"는 XmlDictionaryWriter 클래스가 낼 수있는 이진 직렬화 된 XML을 의미합니다. 우리 모두는 텍스트 직렬화 된 XML에 익숙하지만 직렬화 형식 일뿐입니다. –
* @ John Saunders * XML을 정의하는 것만으로도 직렬화 형식이 너무 저감합니다 ... – Luca