問題タブ [iextensibledataobject]
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.
c# - IExtensibleDataObjectと同等のXmlSerializer
DataContractsを使用すると、IExtensibleDataObjectから派生して、XMLファイルから不明な追加データを失うことなくラウンドトリップを機能させることができます。
出力XMLのフォーマットを制御する必要があるため、DataContractを使用できません。ただし、XMLファイルからデータを失うことなく、古いバージョンのアプリで将来のバージョンのXMLファイルを読み取ることができる必要もあります。
例えば
XML v1:
XML v2:
アプリのv1からXMLv2ファイルを読み取る場合は、逆シリアル化して再度シリアル化すると、XMLv1ファイルになります。つまり、「年齢」フィールドが消去されます。
年齢フィールドが消えないようにするためにXmlSerializerで使用できるIExtensibleDataObjectに似たものはありますか?
c# - クライアントでの IExtensibleDataObject の使用
Web サービスを、いくつかのデータ契約を持つ wcf サービスに変換しました。ベスト プラクティスとして、DataContracts は IExtensibleDataObject から継承することが推奨されます。データメンバーの追加または削除の場合、IExtensibleDataObject が役立つという点がわかりました。しかし、クライアントが削除されたデータメンバーにアクセスする方法を取得できません。これが私のコードです:
次のバージョンの Web サービスでは、次のように DataContract にいくつかの変更を加えました。
ただし、古いバージョンの Web サービスにアクセスしているクライアントは、MiddleName フィールドを指定していないというエラーが発生しています。IExtensionDataObject の使用についてはまだ混乱しています。
wcf - 前方互換性と後方互換性を実現する IExtensibleDataObject
このインターフェイスを DC at Server に実装していません。
クライアントでVS2008によって自動的に生成されたこの実装を取得しましたが、これは問題ありません。
ここで、Reference.cs を編集して新しいフィールドを含めます (特定のサービス メソッドのサーバー DC (入力パラメーター) を区別します)。
コンパイルし、古いサービスを指すコードを実行します。値を無視して新しいフィールドの値を設定しても (ブール型の例を true に設定)、正常に動作します。
次に、DCのサーバーに実装する必要があるのはなぜですか
前方互換性を期待しており、正常に動作しています。
#3で追加したコードを削除します。コンパイル。
代わりに、サーバー DC コンパイルに同じフィールドを追加しました。
ここで、クライアントからサーバー DC に少ないデータを送信するコードを実行すると、列が増えます。それはちょうどうまくいっています。これは、下位互換性が正常に機能していることを意味しますか?
私の理解が正しくないところを願っていますか?
私の環境は.Net 3.5 Sp1です
c# - Json または ExtensionDataObject を変更する
私のものではないため、変更できないJsonサービスがあります。彼らの Json は、解析が困難な方法でフォーマットされています。こんな感じです。
これが JSON 配列のようにレイアウトされていることを本当に望んでいますが、現在はそうではありません。ここで最善のアプローチを考えています。Json を解析する前に配列のように変更するか、ExtensionData をロードしてそこから解析する必要がありますか?
フィードには他にも問題のない項目があります。この1つのセクションにこだわっただけです。
ありがとう
c# - ポータブル クラス ライブラリの DataContract モデルは拡張できませんか?
.Net 4.5 以降、Silverlight 5 以降、および Windows 8 以降のストア アプリを対象とするポータブル クラス ライブラリを作成しています。このライブラリには、実装アプリケーション間で転送するためにファイルにシリアル化および逆シリアル化される Model オブジェクトが含まれています。ポータブル クラス ライブラリはと をサポートしていますが、前方互換データ コントラクト ( MSDN の記事DataContractAttribute
) で推奨されている - はサポートしDataContractSerializer
ていません。IExtensibleDataObject
モデル オブジェクトが時間の経過とともに変化することはほぼ確実です。シリアライゼーション/デシリアライゼーションが少なくとも失敗しないようにするにはどうすればよいDataContractSerializer
ですか?また、往復操作での情報の損失を防ぐにはどうすればよいですか? アドバイスをありがとう!