問題タブ [datacontractserializer]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
.net-3.5 - DataContractSerializer: タイプがわからず、アクセスできないオブジェクトの処理
DataContractSerializer を使用してシリアル化および逆シリアル化されるクラス (コンテナーと呼びます) があります。このクラスには他のクラスのコレクションが含まれており、それらはすべて同じ基本クラス (ContentsBase と呼びます) を継承していますが、異なる派生クラスを持っています。アプリケーションには、ContentsBase から派生したオブジェクトを含むシリアル化された Container オブジェクトが渡される可能性があります。このオブジェクトには、実装が不明であるか、アクセスできません。つまり、コンパイルされたコードはローカルで使用できません。知らない型を「無視」して、このオブジェクトを逆シリアル化する必要があります (それらを往復する必要はありません)。
シリアル化された XML を取得し、逆シリアル化の前に不明な要素を削除するカスタム コードを作成する以外に、これを行う方法はありますか?それが私の唯一のオプションですか?
c# - XmlSerializer で型を [Serializable] とマークする必要がないのはなぜですか?
C# では、インスタンスをシリアル化する場合、オブジェクトの型を属性XmlSerializer
でマークする必要はありません。[Serializable]
ただし、 などの他のシリアル化アプローチでは、クラスをまたはDataContractSerializer
としてマークする必要があります。[Serializable]
[DataContract]
シリアル化要件に関する標準またはパターンはありますか?
.net - DataContractSerializerの逆シリアル化の深さを制御できますか?
DataContractSerializerを介してファイルにシリアル化したかなり大きなオブジェクトグラフがあります。ここで、これらのファイルのリストをユーザーに提示して、選択できるようにします。このリストでは、ルートオブジェクトのプロパティであるファイルに関する詳細の一部を示します。ルートノードのプロパティを表示することだけに関心があるので、グラフ全体をメモリにロードしたくありません。
ファイルからルートオブジェクトをプルして子をスキップできるように、逆シリアル化の「深さ」を制御する方法を知っている人はいますか?他の場所では生のXML操作を行っていないため、ファイルを生のXMLとして扱うことは避けたいと思います。これは、同期を維持する必要があるコードのもう1つのブランチになります。
今の私の唯一のアイデアは、関心のあるプロパティのみを含み、子は含まない互換性のある「summary」オブジェクトを作成し、ファイルをそのオブジェクトに逆シリアル化することです。子はsummaryオブジェクトに関連しないため、これは子をスキップする必要があります。
これを達成するためのより良い方法はありますか?
更新/明確化:属性は私が探している答えではありません。1つには、オブジェクトが最初にシリアル化されたときに「余分な」プロパティがファイルに含まれるのを防ぐことができます。
第二に、彼らは私がやろうとしていることよりも永続的です。最終的には、この時点ではなく、ファイル全体を逆シリアル化したいと思います。ユーザーがインポート用に選択するファイルの要約リストを表示しようとしています。インポート中に、私はすべての子供と孫が必要になります。手順1ではやり過ぎです。これらは潜在的に大きなファイルであるため、ヘッダー情報を表示できるようにいくつかのファイルを完全に逆シリアル化しても機能しません。
うまくいけば、それは元の質問についての混乱を解消します。
.net - 1 つの EndPoint でのみ DataContractSurrogate を使用するように WCF サービスをカスタマイズするにはどうすればよいですか?
私の wcf サービスでは、特定の EndPoint (WebHttpBinding など) で ServiceContract を公開しながら、DataContractSurrogate を使用することに関心があります。
- どうすればできますか?IEndpointBehavior を実装していますか?
- それに加えて、IWsdlExportExtension を実装する必要がありますか?
ありがとう、
アディル
.net - .NET Compact Framework に DataContractSerializer がありません
.NET Compact Framework では DataContractSerializer を使用できないようです。私は、DataContractSerializer がシリアル化の聖杯であり、.NET 3 で導入された最も広く使用されているクラスの 1 つであると考えているため、これは非常に驚くべきことでした。
Compact Framework で同じ機能、つまり、テキスト形式を使用して現実世界のオブジェクト グラフを簡単に保存および復元する方法はありますか?
XmlSerializer や BinarySerializer などの古い限定的な .NET シリアライザーには近づきません。
おそらく DataContractSerializer のカスタム実装が利用可能であるか、Mono のコードを使用することは可能でしょうか? 誰かがこれをやろうとしましたか?
.net - DataContracts で同等の XmlTextAttribute
DataContractSerializer を使用する場合、XmlTextAttribute に相当するものはありますか?
プロパティを XML にシリアライズする際の「既定のプロパティ」として扱いたいと考えています。例えば:
.Value が「foo」に設定されたオブジェクトは、次のようにシリアル化されます。
それよりも:
リー
c# - DataContractSerializer は OpenAccess バージョンの値をスキップします
OpenAccess 切断モデルを使用しています。DataConractSerializer を使用してオブジェクトを逆シリアル化しようとすると、このオブジェクトの Version プロパティが 0 になりますが、xml のみです。コードをデバッグして値を見ると、1 (または 2,3...) です。
シリアライゼーションの前に「int temp = object.Version」と言えば、シリアズリエは値を保存できます。
怠惰な問題があると思います。明示的な呼び出しなしでこの値を強制的に読み取り/保存するにはどうすればよいですか?