【问题标题】:Generic type serialization with two similarly named generic arguments具有两个类似名称的泛型参数的泛型类型序列化
【发布时间】:2012-11-07 03:01:24
【问题描述】:

我希望能够使用 C# XmlSerializer 针对几个不同的实体序列化一个泛型类型。例如我想序列化:

GenericThing<MyApp.A> and GenericThing<MyApp.B>

这一切都很好,直到我有以下类似的东西:

GenericThing<MyApp.A.Entity> and GenericThing<MyApp.B.Entity>

由于这两个类具有相同的名称,序列化程序无法区分这两个实体并尝试将两者序列化为GenericThingOfEnitity

有没有办法装饰GenericThing,以便在序列化期间更具体地说明其通用参数(即序列化为GenericThingOfMyApp.B.Enitity 或类似的)?不幸的是,我无法控制 MyApp.AMyApp.B

【问题讨论】:

    标签: c# .net xml xml-serialization


    【解决方案1】:

    您可以指定不同的 XML 命名空间,例如:

    var entityA = new GenericThing<MyApp.Entity>();
    var entityB = new GenericThing<MyAppB.Entity>();
    var serializer1 = new XmlSerializer(entityA.GetType(), "aaa");
    var serializer2 = new XmlSerializer(entityB.GetType(), "bbb");
    

    【讨论】:

    • 我可以在泛型类型级别执行此操作吗?
    • 你能举例说明你的意思吗?
    • IE 我可以用一个属性来装饰我的 GenericThing 类,该属性将为不同的可能子类整理命名空间吗? (顺便说一句,不是我投反对票)
    • @LukeMcGregor,可能不会。但是你可以实现 2 个不同的 GenericThing 类并用 XmlRootAttribute 标记它们,指定不同的命名空间。
    • @LukeMcGregor, ...你总是可以实现IXmlSerializable
    猜你喜欢
    • 1970-01-01
    • 2016-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多