역 직렬화 중에 속성을 무시하려면 어떻게해야합니까? 제 경우에는 FullName
속성 이 전혀 초기화되는 것을 원하지 않습니다 . 나는 [XMLIgnore]
해결책을 찾고 있지 않습니다. 수업을 변경할 권한이없는 시나리오로 생각하십시오.
내 수업은 다음과 같습니다.
public class Person
{
public int Id { get; set; }
public string FullName { get; set; }
}
초기화하는 방법은 다음과 같습니다.
Person p1 = new Person() { Id = 1, FullName = "P1" };
Person p2 = new Person() { Id = 2, FullName = "P2" };
List<Person> persons = new List<Person> { p, q }; //this object is xml serialized.
그리고 여기 내 XML이 있습니다. (XML 직렬화를 통해 얻었습니다)
<?xml version="1.0" encoding="utf-8"?>
<ArrayOfPerson xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Person>
<Id>1</Id>
<FullName>P1</FullName>
</Person>
<Person>
<Id>2</Id>
<FullName>P2</FullName>
</Person>
</ArrayOfPerson>
FullName
요소 를 건너 뛰는 deserialization 프로세스에서 사용자 지정 XmlReader를 사용할 수 있습니다 . 이 같은:
public class MyXmlReader : XmlTextReader
{
public MyXmlReader(string filePath) : base(filePath)
{
}
public override bool Read()
{
if (base.Read())
{
if (Name == "FullName")
return base.Read();
return true;
}
return false;
}
}
그럼 이렇게 사용하세요
var serializer = new XmlSerializer(typeof(List<Person>));
using (var reader = new MyXmlReader("XMLFile.xml"))
{
var person = (List<Person>)serializer.Deserialize(reader);
}
다른 생성자를 구현하여 스트림 또는 보유한 것을 취할 수 있습니다. 파일 경로 일 필요는 없습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다