Burada basitlik amacıyla, örnek kodumu meyve kullanarak göstereceğim. Aslında, daha anlamlı bir şey yapıyorum (umarız).Geçersiz bir enum öğesini serileştirme istisnasını nasıl önlersiniz?
public enum FruitType
{
Apple,
Orange,
Banana
}
Ve bir sınıf:
[Serializable]
public class Fruit
{
public FruitType FruitType { get; set; }
public Fruit(FruitType type)
{
this.FruitType = type;
}
}
Biz serialize ve de-serialize biz bir enum var diyelim. Şimdi, şimdi olduğu, böylece enum revize sağlar: Ne zaman önce tefrika nesneleri de-serializing
public enum FruitType
{
GreenApple,
RedApple,
Orange,
Banana
}
, sen Apple
(orijinal enum öğesi) gibi System.InvalidOperation
istisna olsun geçerli değil. Nesne, serileştirilmiyor.
[XmlElement(ElementName = "Mode")]
public FruitType FruitType { get; set; }
Şimdi de-serileştirme sırasında eski mülkiyet dikkate alınmaz alır şöyledir: Bunu çözmek başardı
bir yolu tefrika aldığında Fruit
sınıfında farklı bir ad FruitType
özelliği vermekti bulunamadığı gibi. Seri dışı bırakma sırasında geçersiz enum öğelerini yok saymanın/atlamanın bir yolu olup olmadığını bilmek istiyorum, böylece hiçbir özel durum atılmıyor ve nesne yine de serileştirilmiyor.
Ben çalışan bir örnek proje dahil bağlantılı soruya cevabım bakın olmak istediğiniz yere size yol en iyi şekilde olmalıdır: http://stackoverflow.com/a/10709040 – user423430