我想要完成的是能够使用WCF服务返回的自定义数据结构List<>.Contains()
。
我实现了IEquatable<>.Equal
,但它并没有真正在客户端工作。 Contains()始终返回false。我想知道当Contains()方法在客户端放在一起时,它是否实际上是该类的一部分。
答案 0 :(得分:0)
不,这不会奏效。像实现IEquatable<T>
这样的操作是向类型添加行为。数据合同仅用于指定数据,而不是行为。当客户端添加对您的类型的引用时,不会复制行为。
答案 1 :(得分:0)
没有。 Web服务通常意味着与平台无关,因此它们定义了诸如操作契约(用于在服务器上执行的操作)和数据契约(用于交换由简单数据字段组成的对象)之类的东西。但是他们没有在对象上定义方法,因为这需要了解客户端平台。 (例如,您如何将IEquatable&lt;&gt; .Equals IL代码封送到Mac客户端?)
如果您可以完全控制WCF服务的客户端,则可以执行的操作是将同一个库部署到客户端和服务器。也就是说,您可以将数据协定类放在Data.dll中,并将其部署到客户端和服务器(而不是使用客户端上的服务合同生成的默认代理类)。