使用SubSonic生成的类的选择性序列化

时间:2010-11-17 18:49:33

标签: c# serialization mono subsonic

我一直在使用SubSonic 2,但是当我开始一个新项目时,我想升级到3.在我的旧项目中,我使用了一个自定义的,不可持续的黑客来序列化事物用于Web服务。我真的很想找到一个更优雅的解决方案。

我正在使用Mono,所以我需要保持在已实现的类中,例如DataContractSerializer可能已经出局了。仍然在ASMX上,但是只要支持稳定,就会喜欢升级到WCF。 Moonlight / Silverlight将成为最初的客户。未来的JSON / protobuf ......

标准的Xml序列化程序是选择退出的,所以我需要一些方法来控制它。这让我想到了IXmlSerializable。我对SS的模板不太熟悉,但似乎编辑这些模板可以让我生成不触及层次结构链其余部分所必需的序列化代码。这是一个“好主意”吗?

我很乐意使用SS的POCO支持,但我不认为它支持复杂的类型或数组。

其他想法/选项?

1 个答案:

答案 0 :(得分:1)

IXmlSerializable让IMO变得更加尴尬。请注意,如果您自己处理XmlSerializer代码,则可以使用接受XmlAttributeOverrides的构造函数在运行时覆盖所有内容(但如果使用此代码,则应缓存并重新使用XmlSerializer例如,它会像筛子一样泄漏。)

您简要提及protobuf;请注意protobuf-net(即使在v1中)允许您在类型级别添加成员级序列化数据,因此您可以将该信息包含在部分类中以及生成的类型中:

// file 1
partial class GeneratedClass
{
    public int Foo { get; set; }
    public string Bar { get; set; }
}
// file 2
[ProtoPartialMember(1, "Foo")]
[ProtoPartialIgnore("Bar")]
partial class GeneratedClass {}