問題タブ [xaml-serialization]
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# - Xaml のシリアル化と不変の構造体?
これどうやってするの?
TypeConverter を使用してみましたが、私が考えることができたのは、型の XML を構築することだけでした。xaml シリアル化の TypeConverters は xml をエスケープし、プレーン テキストのように扱います。値コンバーターはそれほど優れているわけではありません。
今、私は ISupportInitialize に移行しており、初期化後に変更が行われた場合はスローしますが、不変のルートが好きだったでしょう...
シリアライズしたい型の例:
そしてコード
xaml - WPFでのTextDecorationCollectionのシリアル化
実際にはコレクション(TextDecorationCollection)である依存関係プロパティに指定できるxamlシリアル化属性はありますか?
非常に大きくて複雑なオブジェクトのクローンを作成するためにシリアル化を使用したいと思います。ここに、簡略化されたコードのサンプルがあります。
MyVisualObjectがあり、カスタムフォントなど、クローンを作成したい多くのプロパティが含まれています。
そして、カスタムフォントは次のように定義されます。
ディープクローン方式:
問題は、装飾を下線として初期化するたびに
クローン作成プロセスが次のエラーでクラッシュします:「タイプ'System.Windows.TextDecorationCollection'のコレクションに値を追加すると例外がスローされました。」行番号「1」および行位置「213」。
私が知る限り、この部分であるシリアル化
装飾がコレクションとして設定されていないxamlを返します。
ただし、xamlが次のようになっている場合、クローンプロセスは機能します。
回避策を見つけました。文字列を置き換えるものです。
しかし、それは本当に汚いと思います。もっとクリーンなソリューションを提供できれば幸いです(たとえば、Decorationsプロパティの属性を指定します)
c# - XAMLWriter が DataGrid 列で失敗する
XAMLWriter を使用して、いくつかのコントロールをシリアル化しています。他のコントロールではうまく機能しますが、DataGrid では機能しません。まず、DataGrid 列をシリアル化できません。これは非常に面倒です (誰かが解決策を持っている場合は素晴らしいです!)。そのため、なんとか回避策を見つけました。このコード:
次の出力が生成されます。<DataGrid />
列がまったくありません!だから、列を項目として追加できることがわかりました。
そして、私はこの出力を得ました。これで十分です。
手動で追加できるより<DataGrid.Columns>
も</DataGrid.Columns>
なぜ XAMLWriter がこのように動作するのか、誰でも説明できますか? DataGrid 列を正常にシリアル化する方法はありますか?
xaml - XamlWriter.Saveでシリアル化できないオブジェクトを無視する
xamlにダンプする必要のあるWPFコントロールがたくさんあります。一部のコントロールには、のTagプロパティに格納されているシリアル化できないオブジェクトが含まれています。レイアウト自体が必要なため、Xamlの保存中にそれらを無視する必要がありますが、XamlWriter.Saveは、シリアル化できないことを示すエラーを生成します。
c# - WF4 でのシリアル化の問題
ワークフロー サービスの変数に特有の問題があります。これは、REST サービスからのデータ コントラクトの配列ですContactContract[]
。この配列が空の場合、すべてがうまくいき、ワークフローは正しく続行されます。ただし、配列にアイテムがある場合、アクティビティの外でスタック オーバーフローが発生するため、残念ながら特定の場所を特定することはできません。
そのため、オブジェクト グラフに when サイクルが存在する場合にこのようなものを見たことがDataContractSerializer
ありますが、それを試すために単体テストを作成しました。テストは次の例外で失敗します。
System.Xaml.XamlObjectReaderException: 型 'System.Runtime.Serialization.ExtensionDataObject' をシリアル化できません。型が public であり、既定のコンストラクターまたはインスタンス記述子のいずれかがあることを確認してください。
そしてテスト:
(連絡先リストのxmlを追加しますが、それは巨大です)
これは、コントラクトがIExtensibleDataObject
バージョン管理をサポートするために実装されているためです。
これは私が予想していたスタック オーバーフローではありませんが、関連していると思います。
これらの問題のいずれかに遭遇した人はいますか、またはアドバイスはありますか?