두 클래스가 있고 하나는 다른 클래스를 상속받으며 XmlSerializer를 사용하여 자식을 serialize/deserialize해야한다고 가정합니다. 그러나 부모에게는 직렬화 할 수없는 멤버가 포함되어 있습니다 (예 : 사전).XmlSerializer - 상속되는 직렬화 할 수없는 멤버 무시
public class Parent {
public Dictionary<string, int> dictionary;
}
상위 클래스는 다른 많은 스크립트에 사용되는 라이브러리입니다. 수정할 수 없습니다. 이제 자식 클래스는 직렬화 멤버들을 포함
public class Child : Parent {
[XmlElement]
public int foo;
}
시리얼 라이저를 호출하려고, 나는 사전이 직렬화 가능하지 않다는 오류가 발생합니다. JSON에서 직렬화하려고 할 때, 나는 경고 가격으로 도망 갈 수 있었다. 난 그냥 같은 이름과 유형을 가진 다른 회원을 생성하고, ScriptIgnore을 사용 :
public class Child : Parent {
public int foo;
[ScriptIgnore]
public Dictionary<string, int> dictionary;
}
내가 다시 여기에 (XmlIgnore를 사용하여) 같은 트릭을 시도하지만 잘에 작동하지 않았다, 오류가 동일 . 필자가이 문제를 해결할 수있는 유일한 방법은 xml de/serialize를 제공하고 값을 적절한 위치에 다시 복사하는 별도의 클래스를 만드는 것입니다.
누구든지이 문제를 해결하는 더 좋은 방법을 알고 있습니까? XmlSerializer가 어떤 식 으로든 부모 사전을 잊어 버릴 수 있습니까?
'IXmlSerializable' API (특히 읽기)는 사소한 경우를 제외하고는 아무 것도 얻을 수없는 것으로 유명합니다. 복잡한 일이라면 엄청난 코드 작업이되거나 DOM API ('XmlDocument','XDocument')의 오버 헤드가 발생하여 복잡한 읽기 메소드를 직접 작성하는 고통을 피할 수 있습니다. 내 돈을 위해 직렬화를 살펴 보는 데 상당한 시간을 소비하는 사람으로 이렇게 말합니다. 'IXmlSerializable'을 구현하는 것만으로도 큰 문제가되지 않습니다. 물론 YMMV. –