두 개의 콜렉션이있는 애플 리케이션의 설정 객체가 있습니다. 컬렉션은 속성 가방 모음을 포함하는 간단한 List 제네릭입니다. 내가 역 직렬화 할 때일반 콜렉션 비 직렬화
XmlSerializer x = new XmlSerializer(settings.GetType());
TextWriter tw = new StreamWriter(@"c:\temp\settings.cpt");
x.Serialize(tw, settings);
그러나, 모든 것이 두 컬렉션을 제외하고 복원 (세터에 중단 점 설정에 의해 확인 :
XmlSerializer x = new XmlSerializer(typeof(CourseSettings));
XmlReader tr = XmlReader.Create(@"c:\temp\settings.cpt");
this.DataContext = (CourseSettings)x.Deserialize(tr);
을 내가 직렬화 할 때, 모든 것이 문제없이 저장됩니다 무엇이 이것의 원인일까요? 모든 것이 바닐라입니다 ... 설정 개체의 일부분 ... 대부분을 생략 한 PresentationSourceDirectory는 정상적으로 작동하지만 PresentationModules의 설정자는 충돌하지 않습니다.
private string _presentationSourceDirectory = string.Empty;
public string PresentationSourceDirectory {
get { return _presentationSourceDirectory; }
set {
if (_presentationSourceDirectory != value) {
OnPropertyChanged("PresentationSourceDirectory");
_presentationSourceDirectory = value;
}
}
}
private List<Module> _presentationModules = new List<Module>();
public List<Module> PresentationModules {
get {
var sortedModules = from m in _presentationModules
orderby m.ModuleOrder
select m;
return sortedModules.ToList<Module>();
}
set {
if (_presentationModules != value) {
_presentationModules = value;
OnPropertyChanged("PresentationModules");
}
}
}
좋아,이 의미가 있지만,이 옵션을 해결할 수있는 방법이 무엇인지 명확하지 않습니다. 그것은 내가 돌아 가야하고 사용자 정의 serializer를 구현해야/드 내 개체를 수정 한 후 do not't 수집 setter 수용 ... 그 유일한 옵션은 무엇입니까? –
답변을 업데이트했습니다. 어쩌면 이것이 당신이 원하는 것일 수 있습니다. 세터에서 호출하는 이벤트가 요구 사항입니까? – chriszero
감사합니다 chriszero ... 이제 할 일이 있습니다 ... 많은 감사합니다! –