3

.NET Compact FrameworkではDataContractSerializerが使用できないようです。 DataContractSerializerを直列化の聖杯とみなし、.NET 3で導入された最も広く使用されるクラスの1つと考えると、これは非常に驚くべきことです。.NET Compact FrameworkにDataContractSerializerがありません

Compact Frameworkで同じ機能を使用する方法はありますか。つまり、テキスト形式を使用して実世界のオブジェクトグラフを簡単に保存および復元する機能はありますか?

私は、XmlSerializerやBinarySerializerなどの古い、限定された.NETシリアライザを避けたいと思います。

おそらく、DataContractSerializerのカスタム実装が利用可能か、Monoのコードを使用することは可能でしょうか?誰もこれをやろうとしましたか?

+0

(私はあなたのコメントにいくつかの考えを加えました;このコメントはあなたのリストに表示されます;-)) –

答えて

3

CF 3.5では使用できませんか?(編集:いいえ、私はチェックしました - 確かにそうではありません)。私はXmlSerialzierがあることを知っていますが、はい、いくつかの制限があります。

テキストベースである必要がありますか?オプションはprotobuf-netで、CF2.0、CF3.5、Silverlight、Mono、.NET 2.0などで動作します。一般的に必要なすべてのもの(コールバックなど)が含まれています。ところで

、(「オリーブ」から)モノコード、私が最後に見た時間ではなく、非常に完全な...

(編集)もう一つの選択肢は、Json.NETかもしれません。 hereから、これはCFで動作します。これはJSONであるため、テキストベースであり、必要なもののほとんどを処理する必要があります。

+0

ありがとう!それはテキストベースでなければなりません。なぜなら、私のコードをリファクタリングして、名前空間の変更、クラスの再構築などを行っても、データをそのまま維持できるのは唯一の方法だからです。ほとんどの問題は単なる検索と置換の操作ですテキストファイルで修正してください。 – Hermit

+0

私はJson.NETを試していますが、これまで適切にデシリアライズすることができませんでした。どんなタイプの情報も保存しているようには見えないので、どうやってインターフェースを扱うのか分かりません。たぶんどこかのオプションがあるかもしれませんが、私は見ていきます。 – Hermit

+1

Re namespace/class etc - protobuf-netに*名前*情報はありません。私は難読化されたIL(つまりAA1.aBのようなメンバー)を使っているユーザーがいて、うまくいきます。しかし、それはインターフェイスベースのデータを処理しません - 具体的なタイプのみ。しかし、一見の価値があるかもしれません。 –

0

"limited"というXmlSerializerを呼び出すのが適切かどうかはわかりません。それはどういう意味ですか?あなたはそれを使い、欲しいと思ったことがありますか?あなたのために失敗する具体的なことは何ですか?

私の経験では、XmlSerializerは実際にはDCSよりも豊富な機能を備えています。 DCSは少ないですが、これはおそらく良いことです。一方、DCSは、XmlSerializerが持たない少なくとも1つのことを行います。つまり、プライベートメンバーのvarsとの間で直接シリアル化できます。

XmlSerializerは高速でかなり機能が豊富で、優れたユーティリティを得ることができます。

+0

私はXmlSerializerを試してみましたが、私のニーズには使えないと感じました。主な問題: 1.インターフェイスまたは派生クラスを処理できません 2.プライベートまたは読み取り専用である必要がある場合でも、すべてのデータに対してパブリックの読み取り/書き込みプロパティを作成する必要があります。 これらの点に関するリンクについては、下記の私のコメントを参照してください。 – Hermit

+0

http://geekswithblogs.net/SoftwareDoneRight/archive/2008/01/16/how-to-serialize-an-interface-using-the-xmlserializer.aspx)、 http://www.danrigsby.com/ blog/index.php/2008/03/07/xmlserializer-vs-datacontract serializer-serialization-in-wcf / – Hermit

0

http://www.codeproject.com/KB/XML/GR_CustomXmlSerializer.aspxで素晴らしいXMLシリアライザがあります

:-)解決策を見つけました。

コードはコンパクトフレームワークでは機能しませんが、少し機能が低下するだけで、動作させるためにいくつかの些細な調整を加えました。また、OpenNetCFを使用して欠落しているCFをいくつか記入しました。

関連する問題