您处于服务的末端,但您不了解您的客户。
为什么你会选择一个而不是另一个?
根据经验; 当自己设计一个类型时,它应该是一个类,除非该类型表示单个值,在这种情况下它应该是一个结构。
弗雷德里克有正确的答案。我只会补充一点,您应该记住,客户永远不会看到您的数据合同。它将被翻译成 XML Schema 并包含在 WSDL 中。回想一下,在客户端,它可能是 Perl 甚至是 Classic ASP 客户端——没有值与引用语义的概念。
因此,价值与参考只对服务很重要,对客户不重要。
实际上,约翰桑德斯并不完全正确。WCF 生成的 WSDL实际上表明对象是值类型还是引用类型。当您在客户端拥有 WCF 时,您可以利用这一点。此外,值与引用对 WSDL 各个部分的 isNullable 属性有影响,这会改变语义。
当然,您需要确保自己不会陷入不兼容的角落——在某些客户端环境中,可空值类型不一定与引用类型(甚至可能)相同。