0
class MyCommonClass
{
//properties
}

这个类应该可以在

  1. 服务项目
  2. wcf-客户端项目
  3. 他们作为参考的另一个。在这个公共项目中,我无法生成服务引用。

我想,我不能生成MyCommonClassServiceReferences如何将类标记为不可序列化?在属性中有IgnoreDataMemberAttribute. 我也尝试重用位于 common 项目中的 MyCommonClass 类型,但它仍然生成

更新

换句话说:如果在 ServiceOperation 中使用了某种类型,它会自动生成到 wsdl 文档中。如何禁用它?(我不希望它在 wcf 客户端)

4

1 回答 1

0

尚不清楚公共类是否需要成为 WCF 服务合同的一部分,以便可以通过 WSDL 文档提供给任何客户端,或者您是否正在尝试使 WCF 服务和 WCF 客户端都可以访问公共类作为标准.NET 类。

在服务和客户端之间共享标准 .NET 类的唯一原因是提供对共享逻辑的访问。DataContract否则,只需使用或标记该类,Serializable让服务通过 WSDL 将类公开给客户端。请记住,SOA 的四个原则之一是共享类型 (WSDL) 而不是类(.NET 程序集)。

根据更新的问题,您可以通过强制 WCF 使用XmlSerializer而不是默认值来更好地控制 WCF 序列化为肥皂 XML 的内容DataContractSerializer。此外,您可能希望将域模型对象与 WCF 服务公开的对象分离,如本 SO question and answers中所述。这篇优秀的博客文章解释了两个序列化程序之间的差异以及如何强制 WCF 使用XmlSerializer.

于 2012-10-23T16:57:15.403 回答