簡體   English   中英

在具有XmlTypeAttribute的生成類上實現IXmlSerializable

[英]Implementing IXmlSerializable on a generated class that has XmlTypeAttribute

基本上,最初的問題是我需要將一個布爾值序列化為0或1。我發現的解決方案是實現IXmlSerializable,我這樣做了。 不幸的是,我要序列化的類是根據架構生成的代碼,並且具有XmlTypeAttribute。 當我嘗試使用以通常方式創建的XmlSerializer( new XmlSerializer(type) )對對象進行反序列化時,它將引發以下異常:

System.InvalidOperationException: Only XmlRoot attribute may be specified for the type ______ Please use XmlSchemaProviderAttribute to specify schema type.

立即想到兩個選擇:

1)在生成的代碼中刪除屬性。 每次重新生成代碼時都必須進行此更改。

2)創建序列化程序以刪除屬性時,請使用XmlAttributeOverrides對象。 這將要求其余代碼庫“知道”它需要覆蓋該屬性。 而且,拋出的異常絕對無法提供解決方案。

兩種選擇都有些臭。 還有第三種選擇嗎?

我有同樣的問題,對於我刪除IXMLSerializable的作品,我不使用它,並且您是否嘗試過使用屬性中的某些邏輯隱藏true或false? 像這樣:

private bool mblnFlag;

public String Flag 
{
   get
   {
      return mblnFlag;
   }
   set
   {
      mblnFlag = (value == "1")
   }
}

當然,您應該增強屬性並進行更多檢查,但這就是想法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM