2012-03-15 23 views
2

実行時に.NETのDataContractSerializerに条件付きでEmitDefaultValueを指定する方法はありますか?回避策はありますか?EmitDefaultValueを '時には' .NETのDataContractSerializerを使用して使用することはできますか?

たとえば、EmitDefaultValue = falseをWCFシリアル化に使用できるかどうか不思議ですが、printなどの外部インターフェイス用に生成されたXMLに対してEmitDefaultValue = trueを使用できるようにしたいと考えています。

+0

XMLはXmlSerializerまたはDataContractSerializerを使用していますか? –

+0

具体的には、IIRC:DCSは\ * Specifiedをサポートし、XSは\ * SpecifiedとShouldSerialize \ *の両方をサポートします(条件付きシリアル化の場合) –

答えて

1

あなたが持つ可能性があるオプションは、data contract surrogateまたはIObjectReferenceです。私はこれらの両方があなたにとって過度のものだと思っていますが、あなたが実際にこのシナリオを最後にサポートしたいのであれば、これは喜んで犠牲にしているかもしれません。なお、それらを使用すること等も、性能、相互運用性のために重要な意味、スキーマを介した暴露、

は、私はまた、あなたが何をしようとしていることを指摘したいしたこと - 偽のEmitDefaultValueを - 数にはお勧めしません私が共通の動機を知っているにもかかわらず、 Why is using [DataMember(EmitDefaultValue = false)] not recommended?

+0

興味深い。私はIObjectReferenceをチェックアウトします。私はData Contract Surrogateを簡単に調べました。私は、EmitDefaultValue = falseを使うと、過度に肥大化したオブジェクト構造のような他のいくつかの設計上の欠陥を隠していることに同意する傾向があります。この状況では、これらのシリアライズされたオブジェクトへの唯一の外部インターフェイスはprintです。 –

関連する問題