在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的生成类型。
想法?
答案 0 :(得分:1)
您的问题似乎与集合类型无关,但与DataContractSerializer有关。如果您忘记将XmlSchemaProvider属性应用于您的类,DataContractSerialzer假定您正在尝试序列化旧的DataSet对象。
我假设您没有尝试这样做,因此返回的DataSet为null。这很可能是你的起始元素错误来自的地方。
请参阅http://msdn.microsoft.com/en-us/library/system.xml.serialization.xmlschemaproviderattribute.aspx
编辑:
答案 1 :(得分:0)