XMLSerializer를 사용하여이 클래스를 파일에 저장합니다. 이 클래스는 다음과 같이 문자열과 열거 형을가집니다.XmlSerializer : 더 이상 존재하지 않는 enum 값을 역 직렬화하는 방법
public class IOPoint
{
string Name {get; set;}
TypeEnum {get; set;}
}
public enum TypeEnum
{
Temperature,
Pressure,
Humidity,
}
직렬화하면 다음과 같이 표시됩니다.
<IOPoint>
<Name>Relative Humidity</Name>
<TypeEnum>Humidity</TypeEnum>
</IOPoint>
나는 직렬화 및 여러 버전의 문제없이이 객체를 직렬화 복원했습니다. 나는 더 이상 습도를지지하고 싶지 않아 열거에서 제거했습니다. 그러나 TypeEnum 필드의 값인 Humidity가 TypeEnum에 유효한 값이 아니므로 XML에서 deserialize 할 때 예외가 발생합니다. 이것은 의미가 있지만 이것을 처리하는 방법은 무엇입니까?
내가하고 싶은 것은이 오류를 그냥 무시하는 것입니다. 값을 null로 두십시오. OnUnknownElement XmlDeserilizationEvent 클래스를 구현하려고 시도했습니다. 불행히도이 오류는 발생하지 않습니다.
이 오류를 잡아 내고 무시하는 방법에 대한 아이디어가 있습니다. (비 직렬화가 완료된 후 정리할 수 있습니다).
미치
해결책을 찾았다면 알고 싶습니다. 나는 클라이언트가 알지 못하는 새로운 enum 플래그 값을 포함하는 서버 측과 관련된 관련 문제를 가지고있다. 그래서 정말 한 필드의 직렬화를 관리하는 방법을 찾고 싶다. 다음에 나는 int를 사용 하겠지만, 지금은 ... backward compatibility. – avenmore