내가과 같이 기본 개체의 몇 가지있다 말 :사전에 형식을 모른 채 XML을 deserialize하려면 어떻게해야합니까?
[Serializable]
public class Base
{
public string Property1 { get; set; }
public int Property2 { get; set; }
}
[Serializable]
public class Sub: Base
{
public List<string> Property3 { get; set; }
public Sub():base()
{
Property3 = new List<string>();
}
}
그리고 나는 그렇게처럼 직렬화 :
Sub s = new Sub {Property1 = "subtest", Property2 = 1000};
s.Property3.Add("item 1");
s.Property3.Add("item 2");
XmlSerializer sFormater = new XmlSerializer(typeof(Sub));
using (FileStream fStream = new FileStream("SubData.xml",
FileMode.Create, FileAccess.Write, FileShare.None))
{
sFormater.Serialize(fStream, s);
}
어떻게 그들을 역 직렬화 할 수 있습니다, 내가 다시 올바른 클래스를 얻을 수 있도록? 내가 자료에서 내려하고 올바른 클래스가 생성 될 수있는 클래스 그것을 XML 파일을 통과 할 수있을 것 제외로
, 나는이XmlSerializer bFormater = new XmlSerializer(typeof (Base));
Base newBase;
using (FileStream fStream = new FileStream("BaseData.xml",
FileMode.Open, FileAccess.Read, FileShare.Read))
{
newBase = (Base) bFormater.Deserialize(fStream);
}
뭔가를 원하는 것입니다.
XML의 루트 노드 이름을 읽고 올바른 XmlSerializer를 만들기 위해 switch 문을 사용할 수 있다고 생각했지만 간단한 방법이 있는지 궁금합니다.
확인. 방금 확인 했어. 그것의 예외를 던지고. 마지막 파라를 제거했습니다. – Kirtan
좋아, 더 이상 적용되지 않으므로 내 의견을 삭제했습니다. – Ray