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.