다음 코드를 사용하여 사전을 XML 파일로 직렬화하고 있습니다.
[XmlArray]
[XmlArrayItem(ElementName="Element")]
public List<ElementClass> ParameterList
{
get
{
return Parameters.Select(p => new ElementClass() { Key = p.Key, Value = p.Value }).ToList();
}
set
{
Parameters = value.ToDictionary(x => x.Key, x => x.Value);
}
}
[XmlIgnore]
public Dictionary<string, string> Parameters { get; set; }
이것은 잘 작동하지만 생성 된 XML은 괜찮아 보이지만 XML을 역 직렬화 할 때 사전은 항상 비어 있습니다. 코드 디버깅을 시도했지만 어떤 이유로 Getter 만 deserilazation과 함께 호출됩니다. 나는 이것이 잘못되는 곳에서 내 머리를 돌릴 수없는 것 같습니다.
XmlSerializer는 ParameterList
속성 을 채우려 고 할 때 먼저 값이 이미 있는지 확인합니다. 그럴 경우 항목을 추가하고 속성을 설정하지 않습니다. 즉, 다음을 수행합니다.
var list = obj.ParameterList;
list.Add(deserializedElementClass1);
list.Add(deserializedElementClass2);
...
이거 말고:
var list = new List<ElementClass>();
list.Add(deserializedElementClass1);
list.Add(deserializedElementClass2);
...
obj.ParameterList = list;
ParameterList
deserialization 중에 속성 의 setter가 호출 Parameters
되지 않으므로 속성도 할당되지 않습니다.
Paul Welter의 블로그 ( http://weblogs.asp.net/pwelter34/444961) 에서 XML 직렬화 가능한 사전 구현을 확인하십시오 .
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다