2011-02-03 5 views
0

シリアライズされたデータと共にデータ型を格納するXmlSerializerを作成する方法はありますか。逆シリアル化すると、シリアライズされたオブジェクトの型が自動的に識別され、その型のオブジェクトがオブジェクトとして返されます。xml-serializationからオブジェクトタイプを識別する動的なXmlSerializer?

XDocument、XMLリテラルを含むアイデアも歓迎されます。

+0

「NetDataContractSerializer」を参照してください。 –

答えて

0

John Saunders氏のNetDataContractSerializerに関する十分な見解については、 NetDataContractSerializerは、XMLシリアライゼーションのイースターエッグのように、かなり不明瞭です。私は、必要な属性のソースコードを作成する方法と結果のXMLがどのように見えるかを示すVB.NET固有のブログ記事http://bejabbers2.blogspot.com/2010/03/making-case-for-netdatacontractserializ.htmlを持っています。 シリアル化されたクラスの外観は次のとおりです

<s:Body> 
<DetermineCoordinates xmlns="http://tempuri.org/"> 
<LocationInfo z:Id="1" z:Type="SharedTypes.LocationInfo" z:Assembly="SharedTypes, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" xmlns="http://schemas.datacontract.org/2004/07/SharedTypes" xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns:z="http://schemas.microsoft.com/2003/10/Serialization/"> 
    <latitude>0</latitude> 
<longitude>0</longitude> 
<postalCode z:Id="2">90125</postalCode> 
</LocationInfo> 
</DetermineCoordinates> 
</s:Body> 
+0

私はそれをイースターエッグと呼んでいません。これはデフォルトで.NET固有のバインディングのいくつかで使用されています。 –

+0

@ John Saunders、好奇心の中で、どのバインディングを参照していますか? WCFバインディングを意味すると思います。私はそれがどこでも使われていたことを知らなかった。私は、DataContractSerializerがデフォルトであると思った。 NetDataContractSerializerはほとんどどこにも言及されていません(Juval LowyのProgramming WCF Services第3版の1ページ)。 –

関連する問題