自定义WCF添加服务引用行为?

时间:2010-08-12 17:20:20

标签: .net wcf

在Visual Studio中使用默认的“添加服务引用”菜单选项时,有没有办法自定义或控制在WCF客户端中创建哪种类型的集合类类型?

我们的WCF服务是这样的:当自动“添加服务引用”运行时,它会为包含对象集合的所有服务器端类型创建DataSet。这导致了

“没有相应的开始元素打开”

错误消息。

我想告诉我们的业务合作伙伴如何创建一个有效的WCF客户端,为了做到这一点,我想我需要告诉他们如何创建一个客户端,其类型的相关集合类型是列表,或者数组对象,而不是数据集。

编辑:

我在我的类型中有一个名为DoubleSchedule的自定义类型,它实现了IXmlSerializable,并按以下方式之一进行序列化:
<DataELementName firstIntervalId="87656" schedule="77.3|77.3|76.9|77" />

<OtherDataELementName firstIntervalId="87656" lastIntervalId="87670" value="76.1" />

即使我在Add Service Reference对话框的Advanced选项卡中指定Collection类型,我使用此类型的所有Xml元素都将获得基于DataSet的生成类型。

想法?

2 个答案:

答案 0 :(得分:1)

您的问题似乎与集合类型无关,但与DataContractSerializer有关。如果您忘记将XmlSchemaProvider属性应用于您的类,DataContractSerialzer假定您正在尝试序列化旧的DataSet对象。

我假设您没有尝试这样做,因此返回的DataSet为null。这很可能是你的起始元素错误来自的地方。

请参阅http://msdn.microsoft.com/en-us/library/system.xml.serialization.xmlschemaproviderattribute.aspx

编辑:

http://msdn.microsoft.com/en-us/library/aa347876.aspx

答案 1 :(得分:0)