我在C#Programm中请求不同的SOAP Web服务并处理不同类中的每个结果(Webservice1[]
和Webservice2[]
),但我想将每种类型的数组包装到同一个数组中或{{1}项目。
我怎么能这样做,有什么建议吗?
此致 雷
答案 0 :(得分:3)
它取决于上下文; p如果他们有完全相同的 API,即它们在两个端点是相同的服务,那么可以使用一个服务(和手动更改URL,或使用可以在服务之间重用类型的WCF。
然而,更通用的方法是利用partial class
来实现一个公共接口,即如果它们都具有您关心的.Foo
属性,您应该能够:
namespace SomeNamespace {
public interface ICommon {
int Foo {get;}
}
}
namespace Webservice1Namespace {
partial class Webservice1 : ICommon { }
}
namespace Webservice2Namespace {
partial class Webservice2 : ICommon { }
}
// note we didn't add a .Foo implementation - that comes from the
// *other* half of the partial classes, as per the .designer.cs
这使用隐式接口实现将Foo
从Webservice1
和Webservice2
映射到ICommon
。现在,您可以拥有ICommon[]
并添加Webservice1
或Webservice2
的实例,并访问每个的.Foo
属性。
另一种方法当然是使用dynamic[]
,也允许您访问.Foo
,但是它会将窗口中的类型安全性抛出进程(以及使用反射的任何东西,例如数据绑定等)。
答案 1 :(得分:0)
不确定是否可能,但你可以尝试返回像object []这样的东西吗?这样就不需要创建自定义基类。否则,也许为Webservice1和Webservice2创建基类将允许您返回类似Baseclass []的内容。你看过WCF,DataContracts和继承吗?它可能会让你有一个更好的框架来处理这些事情,imho。