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

Joa*_*rel 2 .net serialization datacontractserializer netdatacontractserializer

在.NET 3.5中,我想创建一个自定义属性(比如[NetDataMember]),它将序列化行为从切换DataContractSerializerNetDataContractSerializer.

基本上,对于A如下图所示的类

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

  [Transcient]
  public IBar ComplexProperty { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

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

知道如何设计一个能够实现这种行为的串行器吗?

mar*_*c_s 6

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

查看Aaron Skonnard 在NetDataContractSerializer上博客文章,其中他提出了一个可以作为属性放在数据合同上的行为:

[NetDataContractFormat] 
Run Code Online (Sandbox Code Playgroud)

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