代码之家  ›  专栏  ›  技术社区  ›  Joannes Vermorel Jonathan McIntire

用于将属性序列化切换到NetDataContractSerializer的自定义属性

  •  2
  • Joannes Vermorel Jonathan McIntire  · 技术社区  · 15 年前

    在.NET 3.5中,我想创建一个自定义属性(比如[netdatamember]),它可以从 DataContractSerializer NetDataContractSerializer .

    基本上,对于一个班 A 如下图所示

    [DataContract]
    class A
    {
      [DataMember]
      public int SimpleProperty { get; set; }
    
      [Transcient]
      public IBar ComplexProperty { get; set; }
    }
    

    我想获得一个序列化程序 DataContractSerializer 默认情况下,但这将被覆盖 NetDataContractSerializer 对于标记为的属性 [NetDataMember] .

    知道如何设计一个可以实现这种行为的序列化程序吗?

    1 回复  |  直到 15 年前
        1
  •  6
  •   marc_s    15 年前

    在WCF中没有“开箱即用”的方法来实现这一点——但是很多真正聪明的人已经解决了这个问题。

    看看Aaron Skonnard的 blog post on the NetDataContractSerializer 在其中,他呈现了一种行为,您可以将数据契约作为一个属性:

    [NetDataContractFormat] 
    

    在服务接口(对于所有方法)或单个方法上,该调用将使用NetDataContractSerializer。您需要为每个操作或服务定义这个,而不是在您的数据契约上。

    推荐文章