我想知道创建公共嵌套/内部 WCF 类(DataContracts)后是否存在任何问题。如果是,这些问题是什么。
(我的一位同事在互联网上看到了一些关于此类问题的资料,但它们似乎特定于某些情况,我们没有找到明确的“是的,它可以工作”或“不,嵌套类在 WCF 中不起作用”,因此我的猜测是它们通常会起作用。)
数据契约构成了您的服务公开的公共 API 的一部分。尽管由普通的 CLR 类在代码中表示(尽管用属性装饰) - 不要被愚弄 - 它们实际上是在线上序列化为字符串以供客户端/服务器使用。因此,从面向服务的角度来看,我们必须摆脱将它们与面向对象概念相关联的诱惑。
使用继承、接口抽象和嵌套类都处理 OO 概念(多态性、抽象和访问),即使部分/所有这些在 WCF 中在技术上是可能的(例如通过KnownTypes
属性)——仅仅因为你可以做某事——它没有不意味着你应该。
我毫不怀疑有一些方法可以实现正确的序列化行为以使 WCF 识别嵌套类。但是,这样做我怀疑您违背了面向服务的原则 - 因此没有使用面向服务架构的全部功能。