c# - 可以从 xml 返回成员值的类

标签 c# xml static-classes

我必须实现类似这样的解决方案 - 我的 C# 函数我使用了很多硬编码的五位数代码。我想要的是将这些硬编码值移动到一个映射配置文件(一些 xml)中,该配置会将代码映射到可在我的函数中使用的常量。

这将有助于在不重新编译源代码的情况下更新代码值。

XML 就像:

<Codes>
    <Code>
        <key>code_name_1</key>
        <value>value_1</value>
    </Code>
    ...
</Codes>

 <Codes>
    <Code key='code_name_1' value='value_1'>
    <Code key='code_name_2' value='value_2'>
    <Code key='code_name_3' value='value_3'>
    ...
</Codes>

映射类是:

static class codeMapping
{
const sting code1 = "code_name_1";
const sting code2 = "code_name_2";
const sting code3 = "code_name_3";
const sting code4 = "code_name_4";
...
}

我想获取这些值的函数:

class someClass
{
 ...someFunction(string someCode)
    {
    ...
    if(someCode == codeMapping.code1)
    ...do something

    var temp2 = codeMapping.code2;
    ...
    }
}

如何将codeMapping类的常量变量初始化为对应的配置值?任何更好的设计理念也被接受。

最佳答案

改为使用静态只读字段并在构造函数中对其进行初始化。希望这就是您要实现的目标。

class Program
    {
        static void Main(string[] args)
        {
            var s = CodeMapping.Code1;
        }

        public static class CodeMapping
        {
            private static readonly string _code1;
            private static readonly string _code2;

             static CodeMapping()
             {
                 string filePath = "code file path";
                 var doc = XElement.Load(filePath);
                 _code1 = doc.Elements().SingleOrDefault(r => r.Element("key").Value == "code_name_1").Element("value").Value;
                 _code2 = doc.Elements().SingleOrDefault(r => r.Element("key").Value == "code_name_2").Element("value").Value;
             }

             public static string Code1 { get { return _code1; }}
             public static string Code2 { get { return _code2; } }
        }
    }

Static readonly vs const

关于c# - 可以从 xml 返回成员值的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25203212/

相关文章:

c# - 在 rowdatabound 事件中设置 Gridview 的列宽。

c# - 删除多元素string []数组中的重复项?

具有可为空日期时间的 C# 空条件运算符

c# - XSD 验证不会失败尾随换行符

java - 如何在有效的 SOAP 请求 xml 模板中填充值

c# - 如何检查 Xamarin iOS 中是否存在某个方法/类/API?

c# - XmlDocument 抛出 "An error occurred while parsing EntityName"

java - 在 Java 中使用相同的内部类名和对象名

PHP 避免静态类以避免依赖,但我需要在任何地方使用全局

php - Laravel : Calling functions defined in base_controller from view