2009-07-08 3 views
3

현재 프로젝트에서 FxCop을 사용하여 다양한 코드 분석 경고를 처리하고 있습니다. 이름 지정 규칙의 경우 규칙과 일치하도록 이름을 변경하거나 내 현재 맞춤법을 유지하고 경고를 표시하지 않기로 결정할 수 있습니다. [Serializable]으로 표시된 클래스 나 속성과 관련하여 이름 변경의 파급 효과에 관심이 있습니다. 특히, 기존의 직렬화 된 데이터와의 역 호환성이 어떻게 영향을받을 수 있습니까? 당신이 및 변경하기 전에 직렬화 된 데이터를 읽을 필요가 필드 이름을 변경하는 경우Serializable 클래스 및 이름 리팩토링

답변

2

, 그것은 더러운 얻을 수 있습니다. BinaryFormatter은 주로 필드 (이름) 기반 시리얼 라이저이며 행복하지 않습니다. 속성과 메소드를 변경하는 것은 외부 코드가 그것을 참조하지 않는 한 잘되어야합니다 (그리고 단위 테스트를 실행해야합니다). 그 시점에서 실행 가능한 옵션 : 수동 직렬화 (ISerializable) 및 직렬화 대리. 고통 많이.

XmlSerializer/DataContractSerialializer을 사용하는 경우에는 멤버 이름과 별도로 serialization 이름을 지정할 수 있으므로 수정하기가 쉽습니다.

[XmlElement("Color")] // original spelling 
public string Colour {get;set;} // now with the correct spelling ;-p 
: 그리고 다른 시리얼 라이저는 모든 ;-p

XmlSerializer 예에서 이름을 사용하지 않는