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

时间:2009-12-11 21:57:05

标签: .net serialization datacontractserializer netdatacontractserializer

在.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 个答案:

答案 0 :(得分:6)

在WCF中没有“开箱即用”的方式来做到这一点 - 但很多非常聪明的人已经解决了这个问题。

查看Aaron Skonnard的blog post on the NetDataContractSerializer,其中他提出了一个可以作为属性放在数据合同上的行为:

[NetDataContractFormat] 
服务接口上的

(对于所有方法)或单个方法将使用NetDataContractSerializer进行该调用。您需要根据操作或服务定义此操作 - 而不是数据合同。