我想通过 WCF 方法传递一组相当通用的数据。数据基本上只是一组分层的键/值对,但它嵌套在任意级别。我最初考虑将它作为单个字符串传递并在任一端执行 XML 或 JSON 或类似的编码/解码,但由于 WCF 传输无论如何都是 XML 看起来有点傻,所以我希望有一种方法可以通过它“自然”。
该方法相当简单:
[OperationContract]
void ProcessData(DataTree tree);
和:
public class DataTree : Dictionary<string, DataTree>
{
}
这一切都编译得很好,但是当我尝试运行该服务时,它在 DataContract.GetStableName 下因 StackOverflowException 而崩溃。
我尝试[CollectionDataContract]
在类上放置一个属性DataTree
并明确指定所有名称,但这似乎没有任何区别。
我也尝试过[DataContract]
在它上面放一个,但是它甚至更早地失败了,因为Dictionary
is ISerializable
。
有任何想法吗?有一个更好的方法吗?