간단히하기 위해 과일을 사용하여 샘플 코드를 보여 드리겠습니다. 실제로 저는 좀 더 의미있는 일을하고 있습니다.잘못된 enum 항목을 deserialize하는 예외를 방지하는 방법은 무엇입니까?
public enum FruitType
{
Apple,
Orange,
Banana
}
그리고 클래스 :
[Serializable]
public class Fruit
{
public FruitType FruitType { get; set; }
public Fruit(FruitType type)
{
this.FruitType = type;
}
}
우리는 직렬화를 해제 직렬화 할 수 있습니다 우리가 열거 있다고 가정 해 봅시다. 자, 지금 있도록 열거을 개정 할 수 있습니다 : 때 이전에 직렬화 된 객체를 해제 직렬화
public enum FruitType
{
GreenApple,
RedApple,
Orange,
Banana
}
, 당신이 Apple
(원래 열거 항목)으로 System.InvalidOperation
예외가 유효하지 않습니다. 객체는 비 직렬화되지 않습니다.
[XmlElement(ElementName = "Mode")]
public FruitType FruitType { get; set; }
자, 드 - 직렬화시에 기존의 특성이 무시됩니다 다음과 같이 나는이 문제를 해결 할 수 있었다
한 가지 방법은 직렬화됩니다 때 Fruit
클래스에 다른 이름을 FruitType
속성을 제공하는 것이 었습니다 찾을 수 없으므로. 직렬화 중에 잘못된 enum 항목을 무시하거나 건너 뛸 수있는 방법이 있는지 알고 싶습니다. 예외가 발생하지 않고 객체가 직렬화되지 않게됩니다.
내가 작업 예제 프로젝트를 포함하는 링크 된 질문에 대한 내 대답을 참조 할 위치에 당신에게 방법을 최대한 활용해야합니다 http://stackoverflow.com/a/10709040 – user423430