Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我们如何在WCF中透明地序列化Dataset ExtendedProperties?_Wcf_Serialization_Dataset - Fatal编程技术网

我们如何在WCF中透明地序列化Dataset ExtendedProperties?

我们如何在WCF中透明地序列化Dataset ExtendedProperties?,wcf,serialization,dataset,Wcf,Serialization,Dataset,我们正在从远程处理迁移到WCF这是一个非常大的应用程序,可以大量使用数据集。我们使用数据集表的ExtendedProperties来存储对象图,其中包含我们在客户端需要的特殊信息 在我们的远程处理实现中,我们确实向通道堆栈中添加了一个客户端和一个服务器通道,以检查消息是否包含dataset,并使用xml序列化程序通过连接发送ExtendedProperties(您可能知道dataset序列化程序对ExtendedProperties中找到的元素执行ToString() 我们这样做是为了对业务规则

我们正在从远程处理迁移到WCF这是一个非常大的应用程序,可以大量使用数据集。我们使用数据集表的ExtendedProperties来存储对象图,其中包含我们在客户端需要的特殊信息

在我们的远程处理实现中,我们确实向通道堆栈中添加了一个客户端和一个服务器通道,以检查消息是否包含dataset,并使用xml序列化程序通过连接发送ExtendedProperties(您可能知道dataset序列化程序对ExtendedProperties中找到的元素执行ToString()

我们这样做是为了对业务规则和UI开发人员透明

在数据集被WCF通道序列化为xml/soap之前,我们应该在WCF中重写或实现什么来管理数据集?可能吗

注意:我已经知道我们必须避免在wcf中使用数据集,但是我们有200多个表单使用数据集,现在还不能全部更改


非常感谢

我想知道您是否可以通过在每一端添加行为属性来交换序列化程序。。。给定
XmlReader
/
XmlWriter
,以下方法:

dataset.WriteXml(xmlWriter, XmlWriteMode.WriteSchema);


似乎可以工作(即,扩展属性得到尊重),因此您应该能够编写一种行为来检测
数据集
,并将其交换到自定义序列化程序,就像这样(| |),但可能更简单。我可以看一下,如果这还不足以开始……

< p>你可以考虑切换到。它能够序列化所有可序列化的.NET类型,甚至包括支持ISerializable的类型,并且完全处理此类图中的循环


但是,只有当您打算使用.NET客户端的WCF服务时,这才有效。

首先感谢您的回答。我终于找到了如何通过混合使用Marc的答案和


谢谢。

是的,WriteXml已经序列化了ExtendedProperties内容,但是正在对对象执行ToString()。我真正需要的是在序列化发生之前有一个点,在反序列化发生之后有另一个点,以允许我在自定义对象的字符串之间进行转换。你给了我一个关于数据契约行为的好线索,我会试试这个,然后告诉你我的结果-P
dataset.ReadXml(xmlReader, XmlReadMode.ReadSchema);