2012-02-08 118 views
2

有沒有在類級別聲明[XmlElement(IsNullable = true)]的方法,以便類中的所有屬性都是XML序列化的,即使它們爲null?在類級聲明[XmlElement(IsNullable = true)]

例如

public BankAccount BankAccount { get; set; }

應該導致<BankAccount xsi:nil="true" />,而不是默認的缺少的元素。

我試過這個,但編譯器(正確)聲明該屬性對類聲明無效。

原因是我不想爲所有屬性指定此值。


編輯:這是序列化方法我使用:

 var serializer = new XmlSerializer(FormType); 
     var stream = new MemoryStream(); 

     serializer.Serialize(stream, form); 
+0

你用'XmlSerializer'或'DataContractSerializer'這樣做,和你在一個Web服務這樣做呢?如果您在Web服務之外使用'XmlSerializer',則可能會使用'XmlAttributesOverride'的重載來強制這些屬性(儘管我從未嘗試過)。它也可以在舊的ASMX風格的Web服務中使用,但我相當肯定你不能用WCF和'XmlSerializerFormatAttribute'來做到這一點。 – 2012-02-08 03:31:23

+0

'XmlSerializer'在一個類中將一個類保存到一個xml文件中。 – Darbio 2012-02-08 03:34:00

+0

可能值得看一下'XmlAttributesOverride'類,並使用接受它的一個實例的'XmlSerializer.Serialize'的重載。我的理解是,你可以覆蓋所有的Xml屬性行爲,明確指定覆蓋「XmlAttributeOverride」實例。我從來沒有這樣做過,所以我不知道它是如何工作的,但我知道我已經看到了類似的問題作爲答案。 – 2012-02-08 03:36:49

回答

2

不幸的是,你有你的註解類XML序列化時,要明確。 除非需要默認行爲,否則每個屬性都必須使用自己的XmlElement屬性進行註釋。