重写 WCF 服务中的 ToString 方法

本文关键字:ToString 方法 WCF 服务 重写 | 更新日期: 2023-09-27 18:36:04

这是我的服务生成的类:

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

我正在使用自己的服务。MyClass我已经覆盖了ToString()但我的客户端中没有它。我想生成它,或者MyClass是部分的,我可以自己覆盖ToString吗?

我知道我可以写入生成的.cs文件。最好的方法是什么,我应该这样做吗?

重写 WCF 服务中的 ToString 方法

如果要同时定义客户端和服务,则不需要使用 WSDL 生成的类。将共享对象移动到单独的程序集中,并从客户端和服务器项目中引用它。当您创建服务引用时,有一个"高级"选项(我认为默认情况下处于打开状态),它重用 WSDL 中的任何已知类,而不是生成新类。

更好的是,如果将服务协定移动到共享库中,甚至不需要创建服务引用,只需直接调用ChannelFactory并消除整个自动生成的代理类即可。

我在我的博客上演示了如何做这两件事:http://blog.kutulu.org/2012/03/proxy-free-wcf-ditching-proxy.html

如果您绝对需要从服务使用 WSDL(例如,您无法控制服务端,它可能会在您身上发生变化),那么您可以扩展 VS 创建的分部类(如您所建议的那样)。如今,您从VS获得的大多数自动生成类都是专门用于使这种扩展成为可能的部分类。当然,缺点是不能保证客户端和服务器的其他分部类方法是相同的。我肯定会认为这是最后的选择。

如果在客户端和服务器项目之间共享 dll where overriden 方法,则可以使用该方法。默认情况下,WCF 生成每个类,其中仅具有在服务接口中声明的属性。不会生成任何方法。

您可以创建一个单独的 dll 文件,并将要在服务和客户端之间共享的内容放入此 dll 中;并将此 dll 添加为对客户端和服务项目的引用。默认情况下,当您生成代理时,它不会自动生成共享类。