カスタムWCF DataContractSerializer
-
21-09-2019 - |
質問
置き換えは可能でdataContractSerializer Windows Communication Foundation自分の双.可能であれば、どのように私達成。
解決
はい、ご提供できる独自のシリアライザの実装です。デフォルトでは、WCFの利用 DataContractSerializer
.を提供するシリアライザでは自分の IOperationBehavior
を行および削除し、現在適用 DataContractSerializerOperationBehavior
から OperationDescription::Behaviors
収集及びその適用にカスタムのインスタンス DataContractSerializerOperationBehavior
.のDataContractSerializerOperationBehaviorはその責任を構築するための XmlObjectSerializer
実施中で CreateSerializer
工場。一部のコードサンプルのために、 チェックすることによりこの条ダRigsby.
から、すべての実施およびユーザーインターフェイス XmlObjectSerializer
まserializeのXML infosetを表現しています。
他のヒント
WCFチームはこれをしました。
ははるかはものよりタッチポイントは、他の2つの答えにここで言及がある - たとえば、あなたが紹介し、使用されている操作の動作と操作フォーマッタを変更、新しいエンコーダを追加する必要があり、よくとして全く新しいサービスとクライアントの振る舞いを追加します。それは、新しいシリアル化形式であり、あなたが何をしようとしているかに依存します。
あなたの目標は唯一のスタンドアロンのシリアル化のための新しいシリアライザを追加する場合、しかし、それは簡単です。
私は何を推薦することです - System.Runtime.Serialization.dll、System.ServiceModel.Web.dll、およびSystem.Runtime.ServiceModel.dll中(リフレクターを経由して)DataContractJsonSerializerのすべての異なる使い方を見て。 P> あなたが唯一のスタンドアロンのシリアル化側面に興味があるなら、
は、ちょうどDataContractJsonSerializerとシリアライズ名前空間内の関連クラスを見てください。カスタムシリアル化の実装の様々な機微を把握することは非常に直感的でなければなりません。あなたは具体的な質問がある場合は離れて掲載し、私は本当にこれがこの特定のソリューションを学ぶための最速かつ最もエレガントな方法であると信じて...
通常りますので、使用できません属性 [DatacontractSerializer]
または [XmlSerializer]
上記のサービス契約imくいただき作成した理由を用いた属性として、今の場合のみ リフレクタ 開始するように、検査を行XmlSerializerやすい目盛.
msdn ると主張している授業にしたい連載中のXmlSerializerなりの装飾が施される。 [XmlAttribute]
または [XmlElement]
属性からではないでしょうか。形状のxmlファイルunderstandinglyではない場合には、授業で飾られている [DataMember]
, は、対応DataContractSerializerるのはなぜ対応することができるでしょうをシリアライザがserializeいて[DataMember]タグのように、XmlSerializer