向 XmlElement C# 分析器添加后缀



我正在处理一个支持不同语言的XML文件,我想使用XDocument/XElement(使用System.Xml.Serialization)将此XML解析为C#类。XML有点复杂,但我想要实现的目标应该很简单,但我无法弄清楚。

Basix XML 示例:

<root>
    <word_EN>Hello</word_EN>
    <word_DE>Hallo</word_DE>
    <word_FR>Bonjour</word_FR>
<root>

我希望我的解析器看起来像:

[XmlRoot("root")]
public class Root
{
    [XmlElement("word_" + LanguageSetting.SUFFIX)]
    public string word { get; set; }
}

我想从另一个类获取后缀,我希望能够更改它。我可以将后缀设置为常量字符串,但随后我无法更改它。使用全局变量也不起作用。

static class LanguageSetting
{
    private static string _suffix = "EN";
    public static string SUFFIX
    {
        get { return _suffix; }
        set { _suffix = value; }
    }
}

错误:属性参数必须是属性参数类型的常量表达式、类型表达式或数组创建表达式

添加后缀的正确方法是什么?

执行此操作的正确方法是将语言后缀作为 word 元素上的 XML 属性,但这对您来说可能是不可能的。

您收到此错误是因为必须在属性修饰中使用编译时常量。 LanguageSetting.Suffix是静态的,但不是常量。请尝试改用 const 关键字。

在 XML 中,不同的标记名称表示不同的对象类型。当前 XML 文档的最佳解决方案是每种受支持的语言都有单独的类,所有类都继承自一个公共类(例如。 WordBase )。

相关内容

  • 没有找到相关文章

最新更新