Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/315.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# 解析对自定义对象的WCF响应_C#_Wcf - Fatal编程技术网

C# 解析对自定义对象的WCF响应

C# 解析对自定义对象的WCF响应,c#,wcf,C#,Wcf,请参阅下面的代码: public Form1() { ServiceReference1.Service1Client s1 = new ServiceReference1.Service1Client(); Person p1 = s1.GetPerson(); } 我得到的编译时错误是:“无法将类型“app.ServiceReference1.Person”隐式转换为“WcfService1.Person”。我

请参阅下面的代码:

public Form1()
        {
            ServiceReference1.Service1Client s1 = new ServiceReference1.Service1Client();
            Person p1 = s1.GetPerson();
        }
我得到的编译时错误是:“无法将类型“app.ServiceReference1.Person”隐式转换为“WcfService1.Person”。我理解此错误的原因。服务器上有一个Person对象,客户端上有一个Person对象,它们位于不同的命名空间中

我不能让WCF服务器开发人员给我提供Person类

我正在为WCF Web服务寻找类似的内容:


我不明白为什么框架会取消验证WCF web服务返回的XML。WCF的全部要点是它应该是可互操作的。

如果所有对象属性的名称相同,您可以使用它将值复制到本地对象,或者手动执行:

public Form1()
{
    ServiceReference1.Service1Client s1 = new ServiceReference1.Service1Client();
    var dto = s1.GetPerson();
    var p1 = new Person()
    {
        x = dto.x,
        y = dto.y,
        z = dto.z
    };
}

如果服务是在内部提供的,那么提供者也应该向您提供数据契约,至少在dll中是这样

否则,您可以通过visual Studio服务引用生成器工具创建服务引用,它将为您创建正确的数据契约

如果您正在编写自己的服务,请确保已经创建了具有必要属性的dto对象

[DataContract]
public class Person
{
    [DataMember]
    public int SampleField { get; set; }
}

我建议看看这两个答案,看看它将如何:“为您创建正确的数据契约"? 它不创建Person类,它应该创建。
Person
类是服务和客户机之间的信封对象。因此,应该在库中或从wsdl文件中提供它的属性。如果它仅由wsdl提供,那么服务引用生成器工具应该处理它们。谢谢。您将如何在WSDL文件中提供它?当您发布wcf服务时,WSDL将自动生成。按照您发布的url进行操作,您将获得它-如果你做得对,我理解这一点,但是你会在客户端获取WSDL person值并将其加载到客户端的对象中吗?再次感谢。感谢汽车制造商的推荐+1.