我有一个Web服务,旨在通过自定义对象接受性能数据。自定义对象包含其他数据中的性能度量的集合(通用列表)。性能度量包括简单的数据类型(字符串,整数和日期时间)。 Web服务公开的唯一方法是传递此自定义对象(性能数据对象)。
问题在于外部使用此自定义对象。我希望在另一个Web服务中使用Generic List类的Add()和Item()方法以及此类中的各种其他功能。如果我从Performance Data Webservice请求对象,它会将内部集合分解为arrayList。我希望它仍然是一个通用的集合。
我玩过使用XmlInclude方法,但目前还没有找到解决方案。
我接下来要做的就是创建一个Peformance Data Web服务可以使用的特定对象的程序集和任何卫星程序(即另一个Web服务)。这里的问题是当我尝试传递由单独的程序集创建的自定义对象时,性能数据Web服务将其另一种类型咆哮。 (另外,我将XmlInclude(GetType(自定义程序集))属性应用于公开的方法。但是仍然认为类型不可转换。
注意:我更愿意调用Performance Data WS来获取自定义对象,而不必处理为每个需要访问的项目添加程序集。
除了重构程序以使用ArrayList公开的方法之外,任何人都有其他想法吗?
答案 0 :(得分:0)
如果使用WCF,则可以配置出现的集合类型,无论是ArrayList,固定数组还是通用List。
答案 1 :(得分:0)
我找到了一个适用于.Net 2.0的解决方案。首先使用Web服务契约(WSCF http://www.thinktecture.com/resourcearchive/tools-and-software/wscf/wscf-walkthrough) 我能够在两个服务之间传递泛型集合。顾名思义,WSCF的缺点是需要使用契约优先而不是更常见的代码优先方法。幸运的是,在创建类和代理之后修改它并不是非常复杂。希望这能帮助任何失去的旅行者......