【发布时间】:2013-04-23 19:25:37
【问题描述】:
在我们的 C# 代码中,我们有一个名为 Project 的类。我们的基础 BusinessObject 类(所有业务对象都继承自)定义了一个属性:
public Project Project { get; set; }
只要我们留在 C# 代码库中,这通常不是问题。但是,这些业务对象类通过网络在 Web 服务中公开。一些消费语言(例如 Flex 的动作脚本)无法处理具有与其类同名的属性。
这种命名冲突在我们的代码中无处不在。有时更改属性或类的名称很容易。有时候真的很难。我们绞尽脑汁,想不出一个好的标准方法来处理这个问题。可以将 Project 类重命名为 ProjectType 或 ProjectInfo,但这很丑陋并且破坏了我们所有消费者现有的代码。我们可以保持类型名称不变并将属性名称更改为 ProjectInfo,但这会导致同样的问题。
对于这种情况,有人有任何指导或最佳做法吗?
编辑:
回应给出的一些建议:
- 方法没有暴露在网络上,所以我们不能使用方法。
- 我更喜欢标准命名约定,该约定也符合 Microsoft 自己的命名标准。
- 为 Flex 公开不同的合同可能是一种选择。但是,我们将 Weborb 用于 Flex 互操作。 Weborb 使用反射来精确匹配属性名称,而不是使用 XML 或 SOAP 序列化。如果有人知道更多关于使用 Weborb 进行自定义序列化的信息,那将会很有帮助。
编辑#2:
作为参考,我们最终将属性重命名为:
public Project ProjectInfo { get; set; }
【问题讨论】:
标签: c# web-services properties