問題タブ [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 - プロパティのシリアル化を NetDataContractSerializer に切り替えるカスタム属性
DataContractSerializer
.NET 3.5 では、シリアル化の動作を からに切り替えるカスタム属性 ([NetDataMember] など) を作成したいと考えていNetDataContractSerializer
ます。
基本的に、A
以下に示すようなクラスの場合
DataContractSerializer
デフォルトのように動作するシリアライザーを取得したいと思いますが、NetDataContractSerializer
でマークされたプロパティではオーバーライドされます[NetDataMember]
。
このような動作を実現するシリアライザーを設計する方法はありますか?
.net - プレーンシリアル化にIOperationBehaviorオーバーライドを適用しますか?(サービスではありません)
を介して[CustomDataMember]
のフォーマッターの動作をオーバーライドする属性を作成したいと思います。Aaron Skonnardの指示に従いましたが、DCSシリアライザーを呼び出すと、カスタム動作がインスタンス化も呼び出されません。DataContractSerializer
IOperationBehavior
明らかに、おそらくコンストラクター呼び出しのレベルで、何かが欠けていますDataContractSerializer
。DCSに適切に動作を注入するために何ができるか知っている人はいますか?
datacontractserializer - DataContractSerializer のスキーマからクラスを生成する方法
xsd.exe
スキーマからクラスを生成する同等のツールはありますDataContractSerializer
かXmlSerializer
?
c# - C# - XMLSerializer と DataContractSerializer の両方を使用したシリアル化をサポートするために使用する属性は?
私はいくつかの単純な POCO オブジェクトを持っています:
フィールドの順序が重要な場合があるため (たとえば、Infopath フォームに送信する場合)、シリアル化するときに要素の順序を維持する必要があります。
そして今、クラスと各フィールドにどの属性を使用すればよいか、混乱しています。そんなこと知ってる:
- DataContractSerializer は [DataContract] と [DataMember(Order = n)] を使用します
- XMLSerializer は [Serializable] と [XmlElementAttribute(Order = n)] を使用します。
次に、XMLSerializer と DataContractSerializer の両方をサポートして、WCF または ASP の両方で使用できるようにする場合に使用する属性を指定します。ウェブサービス?
c# - DataContractSerializerの出力をよりクリーンなXMLにする方法はありますか?
DataContractSerializerを使用してオブジェクトをシリアル化すると、次のような出力が得られます。
ただのタグを出力する方法はありますか
など、属性でクラスをカバーする必要はありませんか?
これの出力が毎回正しいことが保証される方法がない場合はどうなりますか?これを使用してオブジェクトグラフをレンダリングすると、ファイル生成用のX *ドキュメントとマッシュアップするXMLになり、ノードの名前が変更されてドキュメントが空白で正しく表示されるという問題が発生することはありませんか?
c# - XML シリアル化 - DataContractSerializer / Binary / XMLSerialiser をいつ使用するか
私は今しばらくこれを見てきました
フィールド名を変更するとシリアル化が壊れるため、バイナリシリアル化は推奨されないようです =? 良くない
XMLSerializer には問題があります。これは、属性または要素である要素とその命名をより詳細に制御できますが、引数なしのコンストラクターとパブリック フィールドを提供する必要があるためです。
DataContractSerializer は優れていますが、すべてのサブクラスを明示的に追加する必要があるのは残念です
ただし、この制限がない NetDataContractSerializer に出くわしました。
あなたの目標が C# シリアル化であり、xml のサイズに大きな制約がない場合、NetDataContractSerializer は常にここに行く方法ですか??
silverlight - .NET / Silverlight: DataContractSerializer バイト配列とソケット: 予期しない EOF デシリアライズ
現在、ソケットを使用して、Silverlight 3 クライアントと .NET3.5 サービスの間でメッセージを送信しようとしています。TCP 接続を正常にセットアップしてデータを送信できますが、DataContract のシリアル化と逆シリアル化に問題があります。
現在、この作業を行うために WCF PollingDuplex バインディングを使用していますが、そのパフォーマンスに満足していないため、DataContract 属性を利用しようとしながらソケットを試しています。私が持っているコードは次のとおりです。
XmlException: Unexpected End of File をスローするのは ReadObject 行です。受信時にバイト配列 (_recieveBuffer) の末尾の 0 を切り捨てたり、最後に 0 を 1 つだけ残したりするなど、さまざまなことを試しましたが、何も機能していないようです。クライアント側とサーバー側の byte[] バッファーを確認しましたが、最初と最後で同じ値を持ち、同じ長さです。また、actionMessage.GetType() と typeof(ActionMessage) を DataContractSerializer のパラメーターとして使用してみましたが、違いはありません...
ここで何が欠けていますか: dataContractSerializer.Write() が dataContractSerializer.Read() によって生成された出力を受け入れないのはなぜですか?
これに当たるまでは良い一日を過ごしていました...同じ問題を抱えている別の男を見つけましたが、サービス側でmemoryStream.Position = 0を設定するという解決策が提供されました...
前もって感謝します。
.net - プロセスが死ぬまで DataContractSerializer がメモリをリークする
私はEF4を使用する.net4アプリケーションを持っています.BasicHttpBindingを使用してWCFを介してモデルを公開します(ただし、これは変更できます)。このメソッドを呼び出そうとするたびに、Webサーバープロセスがメモリ内で成長し始め、プロセスが停止します.
問題は、エンティティをシリアル化しようとしている DataContractSeralizer (いくつかの関係がある) が再帰スタックに入るときです。それで、WCFを介してこのエンティティをサーバー化するために、何か特別な構成や欠けているものはありますか?
ここにいくつかの追加情報があります: 私の EF モデルのスクリーンショット: http://www.luisguerrero.net/stackoverflow/efmodel.jpg
xml - XSLT: 親ノードの名前空間を使用する
XSLT 出力で名前空間が繰り返されるのを避けたいと考えています。
(Microsoft の DataContractSerializer が実際に適切に処理するのに適していると判断できるように、XSLT を使用して一部の XML を処理しています。DCS が気に入らないと思われることの 1 つは、同じ名前空間を複数回定義することです。)
XXX要素の下からすべての「特性」要素を取得し、次のように新しい配列要素にグループ化しています。
"feature" 名前空間は、XSLT ファイルの先頭で定義されています。ただし、値 "feature" はソース XML には含まれず、任意のプレフィックス (通常は "h") になります。問題は、この XSLT を使用すると、名前空間が出力 XML の 2 つのプレフィックスに割り当てられることです。入力 XML の元の名前空間 (通常は "h") と、XSLT によって生成される "feature" です。(有効な XML ですが、これは貧しい Microsoft を混乱させます。)
したがって、代わりに現在の要素の名前空間を参照することで、出力 XML で「機能」名前空間を定義することを完全に避けたいと思います。これについてバリアントを試しましたが、現在のコンテキスト ノードの名前空間プレフィックスを取得するために xsl:element の名前空間の値を正しく設定する方法がわかりません...
サンプル入力:
名前空間を繰り返す (悪い):
望ましい出力:
この XSLT はほとんど機能しますが、"h" 値をハードコーディングする必要があるため、代わりに任意の値をサポートしたいと考えています。
c# - wcfは列挙型を文字列として逆シリアル化します
WCFを使用してRESTfulWebサービスを利用しようとしています。Webサービスの形式を制御できないため、あちこちでいくつかの回避策を講じる必要があります。ただし、回避できないと思われる大きな問題の1つは、WCFで列挙型を文字列として逆シリアル化する方法です。
これは私のコードです(明らかに名前が変更されています):
そして、これは逆シリアル化に失敗した返されるデータです:
最後に、スローされた例外:
タイプService.Fooのオブジェクトの逆シリアル化中にエラーが発生しました。値「bar」は、タイプ「Int64」として解析できません。
XmlSerializerの使用に切り替えたくありません。他の多くの欠点の中でも、プロパティにプライベートセッターを設定できないためです。
WCF(またはDataContractSerializer)に列挙型を文字列値として処理させるにはどうすればよいですか?
編集:これを行うことは不可能のようであり、動作は設計によるものです。私たちに選択肢を与えず、ハックに頼らなければならなかったマイクロソフトに感謝します。somoriが提案する方法でそれを行うことが、JSONとWCFで文字列列挙型を取得する唯一の方法のようです。