gpt4 book ai didi

c# - 如何创建自定义 XmlAttribute 序列化

转载 作者:太空狗 更新时间:2023-10-29 19:44:36 26 4
gpt4 key购买 nike

我正在寻找谁来自定义属性的序列化。我以为这会很简单,但我无法按照我想要的方式实现我想做的事情。

所以这是一个简单的例子:

类定义:

Class MyClass
{
[XmlAttribute("myAttribute")]
public int[] MyProperty { get; set; }
}

我想要的 Xml 结果:

<MyClass myAttribute="1 2 3... N" />

我唯一要做的就是放置一个 [XmlIgnore] 属性并使用一些代码创建另一个属性来进行转换。

那么,我的问题是,有没有比创建新属性更好的方法?也许您可以创建某种 TypeConverter,以便序列化程序使用它?

此外,我尝试使用 Type 属性但没有成功。 (总是有异常(exception))。但据我所知,它适用于已经定义的数据类型。

[XmlAttribute("myAttribute", typeof(MyConverter))]
public int[] MyProperty { get; set; }

另一种有趣的方式是这样的:

[XmlAttribute("myAttribute")]
[XmlConverter(typeof(MyConverter))]
public int[] MyProperty { get; set; }

谢谢。


编辑由于没有提供像我正在寻找的解决方案,我最终决定选择“IXmlSerializable”解决方案。

最佳答案

您可以:

  1. 实现 IXmlSerializable 和处理所有的序列化/反序列化手动输入
  2. 使用代理属性:

    [XmlIgnore]
    public int[] MyProperty { get; set; }


    [XmlAttribute("myAttribute")]
    public string _MyProperty
    {
    get
    {
    return string.Join(" ", MyProperty.Select(x => x.ToString()).ToArray());
    }
    set
    {
    MyProperty = value.Split(' ').Select(x => int.Parse(x)).ToArray();
    }
    }

关于c# - 如何创建自定义 XmlAttribute 序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4299259/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com