在我们的项目中,我们使用 basicHttpBinding 来消费在中心位置公开的WCF网络服务作为服务。
在客户端桌面应用程序中,我们需要使用这些Web服务。我可以使用WSDL.exe生成代理类。
但是,我需要将webservice给出的数据/类转换为我的本地类,因为现在我将xmlserialzing由webservice给出的那些类/对象并反序列化到我的本地类中,因为两个类模式完全匹配。
有什么更好的方式可以关注吗? 要么 我是否需要将每个属性从一个类分配给另一个类?
感谢 NRK。
答案 0 :(得分:3)
手动声明类而不是生成。这是最干的解决方案。
答案 1 :(得分:1)
如果您可以控制本地类(它们不是生成代码;或者您自己生成它们),则可以使用xml属性来装饰类,这样您就可以将它序列化并反序列化为您使用的xml和您不必具有属性的特定名称。除此之外,您可能还有本地课程的其他属性。
如果您无法控制定义本地类,那么您必须定义转换器或提到的elder_george,请使用AutoMapper。
使用手动编写的转换器IMO是最快的方法,您可以将它们定义为本地类的隐式转换器运算符。
答案 2 :(得分:0)
我自己就像你一样完成了序列化/反序列化。如果您的类具有与代理类相同的属性,则可以编写一个帮助器方法,该方法使用反射来遍历代理的属性并设置类的相应属性。只要属性名称相同,那么一个方法应该适用于所有类。
答案 3 :(得分:0)
一些想法:
/reference
中的/r
(也是svcutil.exe
),或者您可以通过IDE进行此操作DataContractSerializer
和往返(就像您已经;只是WCF最贴近DataContractSerializer
,而不是XmlSerializer
)