【发布时间】:2011-12-25 17:14:00
【问题描述】:
我想在 DataContract 类中使用自定义的 aplified 类型(想想 Nullable)。
我试图写一个IDataContractSurrogate,但它在反序列化时失败了。
我的放大型是这样的:
public struct Amplified<TValue>
{
public TValue Value { get; set; }
//... some special code ...
}
DataContract 可能如下所示:
[DataContract] public class MyDTO
{
[DataMember] public Amplified<string> SpecialString { get; set; }
}
上面的代码可以工作,但是使用放大类型的 Value 属性会产生不必要的嵌套。我希望 DataContract 将 Ampliefied 表示为电线上的普通字符串。
DataContract 序列化程序(JSON 和 Xml)可以做到这一点吗? 为什么在使用 IDataContractSurrogate 将 Amplified 替换为字符串时出现 InvalidCastException?
【问题讨论】:
-
另一个信息:代理转换异常发生在放大的 Guid 上。
标签: c# .net functional-programming datacontractserializer datacontract