WCF メソッドを使用して、かなり一般的なデータ セットを渡したいと考えています。データは基本的にキーと値のペアの階層セットですが、任意のレベルにネストされています。私はもともとそれを単一の文字列として渡し、両端でXMLまたはJSONまたは同様のエンコード/デコードを行うことを検討していましたが、とにかくWCFトランスポートはXMLであるため、少しばかげているように見えたので、渡す方法があることを望んでいます"当然"。
この方法はかなり簡単です。
[OperationContract]
void ProcessData(DataTree tree);
と:
public class DataTree : Dictionary<string, DataTree>
{
}
これはすべて正常にコンパイルされますが、サービスを実行しようとすると、DataContract.GetStableName で StackOverflowException が発生してクラッシュします。
[CollectionDataContract]
クラスに属性を付けて、DataTree
すべての名前を明示的に指定しようとしましたが、違いはないようです。
私もそれをつけようとしましたが、 is で[DataContract]
あるため、さらに早く失敗します。Dictionary
ISerializable
何か案は?これを行うより良い方法はありますか?