在.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]
。
知道如何设计一个能够实现这种行为的串行器吗?
答案 0 :(得分:6)
在WCF中没有“开箱即用”的方式来做到这一点 - 但很多非常聪明的人已经解决了这个问题。
查看Aaron Skonnard的blog post on the NetDataContractSerializer,其中他提出了一个可以作为属性放在数据合同上的行为:
[NetDataContractFormat]
服务接口上的(对于所有方法)或单个方法将使用NetDataContractSerializer进行该调用。您需要根据操作或服务定义此操作 - 而不是数据合同。