【问题标题】:Exposing Extension methods in WCF datacontract在 WCF 数据合同中公开扩展方法
【发布时间】:2011-12-16 01:54:38
【问题描述】:

是否可以在 WCF 中的数据协定对象上公开扩展方法?

这是一个例子:

[DataContract]
public class Customer
{
    [DataMember]
    public int ID { get; set; }

    [DataMember]
    public string FirstName { get; set; }

    [DataMember]
    public Product CurrentProduct { get; set; }

    public Customer DeepCopy()
    {
        //Do Something else. For example just return a new instance
        return new Customer();
    }      
}

[DataContract]
public class Product
{
    [DataMember]
    public int ID;

    [DataMember]
    public int Name;
}

在客户类中有一个深拷贝方法。我如何将其公开给客户?

【问题讨论】:

  • 你能提供更多关于你正在寻找什么的信息吗?您是想为特定类型、一般数据协定创建扩展方法,还是想通过网络获取扩展方法?
  • 如何显示您想要扩展的内容,也许答案将是如何在不尝试扩展序列化类型的情况下实现它。
  • 你为什么需要它?如果客户需要,为什么不让客户新建客户,但实际上,由于这是 WCF,客户将由服务创建并提供给客户,反之亦然。为什么需要 DataContract 来执行此操作?
  • @Mark W。我不想在 deepCopy 中创建新的。泰国只是为了展示我这样做的一个例子。假设我正在做一些反射并将成员复制到一个新对象,然后返回该对象。
  • 如果我的回答有用,请将其标记为已接受,谢谢。

标签: .net wcf wcf-client


【解决方案1】:

不,您只能在 WCF DataContract 中公开属性,而不能公开方法。

【讨论】:

    【解决方案2】:

    您几乎可以使用“重用类型”功能来做到这一点。不幸的是,对于您的情况,它只允许重用服务实际用作输入或输出参数的类型。包含扩展方法的类将是一个静态类,因此不会显示为输入参数或返回类型。

    【讨论】:

      猜你喜欢
      • 2019-06-07
      • 2017-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多