在.NET 3.5中,我想创建一个自定义属性(比如NetDataMember),将序列化行为从DataContractSerializer切换到NetDataContractSerializer。
基本上,对于如下所示的类A
[DataContract]
class A
{
[DataMember]
public int SimpleProperty { get; set; }
[Transcient]
public IBar ComplexProperty { get; set; }
}我希望获得一个默认情况下行为类似于DataContractSerializer的序列化程序,但对于标记为[NetDataMember]的属性,它将被NetDataContractSerializer覆盖。
你知道如何设计一个序列化程序来实现这样的行为吗?
发布于 2009-12-12 06:06:56
在WCF中没有“开箱即用”的方法来做到这一点--但是很多真正聪明的人已经解决了这个问题。
请看Aaron Skonnard的blog post on the NetDataContractSerializer,他在其中展示了一种行为,您可以将其作为属性添加到数据契约中:
[NetDataContractFormat] 在您的服务接口上(对于所有方法)或在单个方法上,将为该调用使用NetDataContractSerializer。您需要为每个操作或服务定义这一点,而不是在您的数据契约上。
https://stackoverflow.com/questions/1891128
复制相似问题