我真的陷在这个问题上:我在类BigStorage中有一些数据
以及GUI中的一些操作。我需要将数据从此类传递到Web服务,并获取答案并进行处理。

我已经编译了一个包含此BigStorage类定义的dll,并将其提供给我们的网站管理员-他使用了该类并将结果返回给我。但是我收到了这个结果
webRefName.BigStorage,不等于我的BigStorage(它们具有不同的名称空间)。

顺便说一句,当在我的BigStorage中,这个webRefName.BigStorage中的一个私有字段是typeof DataSet(?!)时,它具有我自己定义的类型(我为此添加了xml序列化)。

有没有一种方法可以执行以下操作:

webRefName.BigStorage bS = (webRefName.BigStorage) bSfromLocalProject;
 //where  bSfromLocalProject typeof BigStorage


另外,为什么Reference.cs中的该字段(请参见上文)是DataSet?

最佳答案

从网络引用生成的类型是从可用元数据(wsdl)生成的浅层代理类型。它们与原始类型不同,并且不能互换使用。可以将名称空间配置为Web引用属性的一部分,但使其相等将无法完成此工作。

如果另一端使用的是原始程序集,请考虑使用Web服务参考(即WCF)。这具有重用现有类型的选项,这意味着它可以使用现有dll引用中的类型。然后它们是完全可互换的(或更准确地说,它们是同一件事-因此没有可互换的内容)。

关于c# - WebReference生成的 namespace ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11776985/

10-10 14:07