2011-02-07 20 views
1

データメンバを逆シリアル化するときにWCF直列化エンジンが使用するコンストラクタを指定できますか?WCF DataMemberのオーバーライド辞書コンストラクタ

例:Dictionaryから継承する新しいクラスを作成せずに、このコンストラクタを使用して大文字と小文字を区別しない辞書を作成したいとします。

[DataMember] 
Dictionary<string, string> Values { get; set; } 

// Values should be created with this constructor 
new Dictionary<string, string>(StringComparer.InvariantCultureIgnoreCase); 

答えて

2

は、それがデータメンバーをデシリアライズするときWCFのシリアル化エンジンが使用するコンストラクタ指定することは可能ですか?

カスタムシリアル化を実装しない限り、そうではありません。

+0

私はそれを恐れていました。確認していただきありがとうございます。 – chilltemp

3

プロパティ設定メソッドの実装を提供する場合は、プロパティの値となる新しい大文字と小文字を区別しないディクショナリインスタンスをインスタンス化し、シリアライザによって提供されるインスタンスのアイテムをコピーするだけですvalueパラメータとして指定します。

シリアル化されたディクショナリのソースで大文字と小文字が区別される場合は、キーの衝突のために例外を処理する必要があります。

+0

興味深いアイデア。これは、他のシリアライゼーションの制限を克服する方法です。唯一の厄介な部分は、追加の辞書の作成です。 – chilltemp