-->

在WCF服务覆盖ToString方法(Override ToString method in WCF

2019-07-29 17:04发布

这是我生成的服务类:

public partial class MyClass : object, 
                               System.Runtime.Serialization.IExtensibleDataObject, 
                               System.ComponentModel.INotifyPropertyChanged 
{ }

我用我自己的服务。 在MyClass我已重写ToString()但我没有在我的客户端。 我想要么生成它或MyClass是偏我能够重写ToString自己?

我知道我可以在生成cs文件编写。 什么是做到这一点的最佳方式,并在所有我该怎么办呢?

Answer 1:

如果定义客户端和服务,你不需要使用WSDL的生成类。 移动至共享对象到一个单独的组件,并且从客户端和服务器的项目引用它。 当您创建服务引用,有从WSDL,而不是产生新的重新使用任何已知种类的“高级”选项(我认为这是在默认情况下)。

更妙的是,如果移动服务合同到您的共享库,你甚至都不需要创建服务引用,你可以调用ChannelFactory直接和消除整个自动生成的代理类。

我对如何做这些事情都在我的博客演示: http://blog.kutulu.org/2012/03/proxy-free-wcf-ditching-proxy.html

如果您确实需要使用来自服务的WSDL(例如,您不必在服务端控制,它可以改变你),那么你可以扩展VS创建部分类(如你所说)。 大多数自动生成类从VS这些天得到的是局部类专门做这样的扩展可能。 不利的一面,当然,是没有什么保证客户端和服务器的额外部分类方法是相同的。 我肯定会认为这是一个不得已的选择。



Answer 2:

如果您共享其中覆盖方法客户端和服务器之间项目的exixts DLL,您可以使用该方法。 默认情况下,WCF产生只有在服务接口声明的属性每个类。 不产生方法。

您只需创建一个单独的dll文件,并把你想要的服务和客户端进入这个DLL之间共享的内容; 并添加此DLL为客户端和服务项目的参考。 默认情况下,当你生成代理,它不会自动生成共享类。



文章来源: Override ToString method in WCF service