Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WebReference生成的命名空间_C#_Asp.net_Web Services - Fatal编程技术网

C# WebReference生成的命名空间

C# WebReference生成的命名空间,c#,asp.net,web-services,C#,Asp.net,Web Services,我真的被这个问题困住了:我在类BigStorage 以及GUI中的一些操作。我需要将这个类中的数据传递给web服务,然后接收答案并对其进行处理 我已经编译了一个包含这个BigStorage类定义的dll,并将它交给了我们的网站管理员——他使用了这个类并向我返回了一个结果。但我收到这个结果是因为 webRefName.BigStorage,它不等于myBigStorage(它们有不同的名称空间) 顺便说一下,这个webRefName.BigStorage中的一个私有字段是typeof DataSe

我真的被这个问题困住了:我在类
BigStorage
以及GUI中的一些操作。我需要将这个类中的数据传递给web服务,然后接收答案并对其进行处理

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

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

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

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

另外,为什么Reference.cs中的此字段(见上文)是数据集?

从web引用生成的类型是从可用元数据(wsdl)生成的浅层代理类型。它们与原始类型不同,不能互换使用。名称空间可以配置为web引用属性的一部分,但使其相等并不能实现此目的

如果在另一端使用了原始程序集,请考虑使用Web服务引用(即WCF)。它可以选择重用现有类型,这意味着它可以使用现有dll引用中的类型。然后它们完全可以互换(或者更准确地说,它们是相同的东西,因此没有任何东西可以互换)。

在C中,您不能(默认情况下)将不同的类型相互转换;但是,您可以在您有权访问的类中定义转换操作:如果您有权访问web引用的类,那么自动生成的类应该是部分的,您可以扩展它;如果您有权访问库,那么可以向库中添加转换操作方法(尽管我不建议对库执行此操作-最好对web引用的类执行此操作)

基本上,为了能够像您在问题中提供的那样使用代码,您可以在源类或目标类中定义显式或隐式转换

参考MSDN:,。
在您的例子中,隐式转换似乎更适合,因为这种转换不容易丢失数据

这将看起来像这样:

namespace webRefName {
    public partial class BigSorage {
        public static implicit operator BigStorage(otherNamespace.BigStorage otherBigStorage) {
            //write conversion code from otherBigStorage to webRefName.BigStorage.
            //return the resulting webRefName.BigStorage.
        }
    }
}
顺便说一句,此代码必须驻留在引用Web服务的同一程序集中,因为不能在不同的程序集中定义分部

之后,您可以编写您要求的内容(即使没有明确的强制转换):

我希望这有帮助

Tengiz

“重用引用程序集中的类型”不可能用于web引用?
webRefName.BigStorage bS = bSfromLocalProject;