역 직렬화 중에 속성을 무시하려면 어떻게해야합니까? 필자의 경우, FullName
속성을 전혀 초기화하지 않기를 바란다. 나는 [XMLIgnore]
솔루션을 찾고 있지 않습니다 - 클래스를 변경할 수있는 액세스 권한이없는 시나리오라고 생각하십시오. 여기C# XML XML의 비 직렬화, 데이터 무시
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 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>
매우 실용적인 솔루션 (실제 코드에 너무 많은 속성이없는 경우)은 새로운 _temporary_ 클래스를 만드는 것입니다 (예 : Person2는 무시할 필드를 제외한 모든 필드를 포함합니다. 그것을 직렬화에 사용하십시오. 비 직렬화하는 동안 원래 클래스를 사용할 수 있습니다. 무시 된 값을 null로 남겨 둡니다. 그러나 XML에서 클래스 이름이 중요한 경우이 제안은 유용하지 않습니다. –
첫 제안을하지 않으면 도움이 될 수 있습니다. [xml serialization 중에는 속성을 무시하지만 deserialization 중에는 속성을 무시] (http://stackoverflow.com/a/18242538/6741868). 동일한 Override 메소드의 또 다른 예는 [XML에 직렬화 할 때 속성 무시] (0120-388-9800) –
입력에 대한 감사하지만 XMLAttributeOverrides는 XML의 요소 이름이 클래스 속성 이름과 다릅니다. – Sekhar