【发布时间】:2009-09-17 18:07:38
【问题描述】:
我有一个 Web 服务,旨在通过自定义对象接受性能数据。自定义对象包含性能度量的集合(通用列表)以及其他数据。性能度量由简单的数据类型(字符串、整数和日期时间)组成。 webservice暴露的唯一方法需要传入这个自定义对象(性能数据对象)。
问题在于在外部使用这个自定义对象。我希望在另一个 web 服务中使用 Generic List 类的 Add() 和 Item() 方法以及该类中的各种其他功能。如果我从 Performance Data Webservice 请求对象,它会将内部集合序列化为 arrayList。我希望它仍然是一个通用集合。
我曾尝试过使用 XmlInclude 方法,但目前还没有找到解决方案。
我尝试做的下一件事是创建这个特定对象的程序集,该对象既可以用于性能数据 Web 服务,也可以用于任何卫星程序(即另一个 Web 服务)。这里的问题是,当我尝试传入由单独的程序集创建的自定义对象时,性能数据 web 服务将其称为不同的类型。 (另外我将 XmlInclude(GetType(custom assembly)) 属性应用于公开的方法)。但是仍然认为类型不可转换。
注意:我宁愿调用 Performance Data WS 来获取自定义对象,而不必处理向每个需要访问的项目添加程序集。
除了重构程序以使用 ArrayList 公开的方法之外,还有其他想法吗?
【问题讨论】:
-
Web 服务并不是用来传递自定义对象的,实际上它们会被序列化为 XML 标准类型。
-
我已经在下面发布了解决方案。
标签: web-services