有没有办法隐藏/展平 WCF 服务数据契约中的基本类型?

发布于 2024-09-14 11:35:11 字数 681 浏览 6 评论 0原文

考虑以下简单示例:

[DataContract("{0}Base")]
public class Base<T> where T : Entity<T>
{
    // Common methods & properties.  No WCF exposed properties
}

[DataContract]
public class Employee : Base<Employee>
{
    // WCF exposed properties
}

基类 Base 没有 WCF 服务使用者感兴趣的属性,但 WCF 强制我还使用 [DataContract] 属性注释基类。这本质上在服务客户端上显示为 Employee : EmployeeBase,其中 EmployeeBase 是一个没有属性的空类。

我不想以这种方式向服务公开 Base 类,那么我有什么选择?

  1. Employee 类的 DTO - 我不想添加这种复杂性
  2. “扁平化”DataContract 层次结构,以便 Employee 的数据协定不会暴露它继承自 Base。这可能吗?如何?
  3. 其他解决方案?

谢谢。

Consider the following simple example:

[DataContract("{0}Base")]
public class Base<T> where T : Entity<T>
{
    // Common methods & properties.  No WCF exposed properties
}

[DataContract]
public class Employee : Base<Employee>
{
    // WCF exposed properties
}

The base class Base has no properties of interest to the WCF service consumers, but WCF forces me to also annotate the Base class with a [DataContract] attribute. This essentially shows up on the service client as Employee : EmployeeBase with EmployeeBase being an empty class with no properties.

I do not want to expose the Base<T> class to the service in this way, so what are my options?

  1. DTO for the Employee class - I'd rather not add this complexity
  2. "Flatten" the DataContract hierarchy so that the data contract for Employee does not expose that it inherits from Base<T>. Is this possible? How?
  3. Other solution?

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

翻了热茶 2024-09-21 11:35:11

层次结构中的每个类都必须可序列化/DataContract。如果您不想公开层次结构,则必须使用 DTO,或者您可以尝试为您的 Employee 类实现 IDataContractSuroggate。

Each class in hiearchy has to be serializable / DataContract. If you don't want to expose hiearchy you have to use DTO or you can try to implement IDataContractSuroggate for your Employee class.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文