gpt4 book ai didi

c# - 如何从其他类可以使用的外部设置文件创建字典?

转载 作者:行者123 更新时间:2023-12-04 20:50:10 26 4
gpt4 key购买 nike

我想从格式化为字符串列表“somekey = somevalue”的设置文件创建一个字典。然后,我希望这个由一个类生成的键和值字典可供我程序中的其他类使用,因此每次我想使用另一个类中的设置时,我不必再引用外部文件。

我已经弄清楚了第一部分,创建了一个可以读取外部文件并将字符串列表转换为字典的类,但我不知道如何使文件读取类创建的字典数据可用于同一命名空间中的其他类。

最佳答案

稍微不同的方法是使用扩展方法,我的示例相当基本,但效果很好

using System.Collections.Generic;

namespace SettingsDict
{
class Program
{
static void Main(string[] args)
{
// call the extension method by adding .Settings();
//Dictionary<string, string> settings = new Dictionary<string, string>().Settings();

// Or by using the property in the Constants class
var mySettings = Constants.settings;
}
}

public class Constants
{
public static Dictionary<string, string> settings
{
get
{
return new Dictionary<string, string>().Settings();
}
}
}


public static class Extensions
{
public static Dictionary<string, string> Settings(this Dictionary<string, string> myDict)
{
// Read and split
string[] settings = System.IO.File.ReadAllLines(@"settings.txt");

foreach (string line in settings)
{
// split on =
var split = line.Split(new[] { '=' });

// Break if incorrect lenght
if (split.Length != 2)
continue;

// add the values to the dictionary
myDict.Add(split[0].Trim(), split[1].Trim());
}
return myDict;
}
}
}

settings.txt 的内容
setting1=1234567890
setting2=hello
setting3=world

结果

Result

您当然应该使用自己的保护功能和类似功能来扩展它。这是一种替代方法,但使用扩展方法并不是那么糟糕。 Extensions 类中的功能也可以直接在 Constants 类的属性方法中实现。我这样做是为了好玩:)

关于c# - 如何从其他类可以使用的外部设置文件创建字典?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11610638/

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