2

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

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

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

  [Transcient]
  public IBar ComplexProperty { get; set; }
}

我想获得一个DataContractSerializer默认行为的序列化程序,但NetDataContractSerializer对于标有[NetDataMember].

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

4

1 回答 1

6

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

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

[NetDataContractFormat] 

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

于 2009-12-11T22:06:56.453 回答