伙计们,我真的很想要这个,但我陷入了困境,我无法想到解决方案:
我发现了一个IniParser库,用于解析文件中的设置.但是默认方法是这样的:
FileIniDataParser parser = new FileIniDataParser();
//Parse the ini file
IniData parsedData = parser.LoadFile("TestIniFile.ini");
parsetData['some']['settings'];
Run Code Online (Sandbox Code Playgroud)
在我的项目,虽然,我不想到处调用分析器,所以我提出,在启动时加载的文件和所有我需要做的只是访问实例类.这就是我要的:
namespace my_project
{
public class settings
{
public IniData ini()
{
string login = "Settings.ini";
FileIniDataParser parser = new FileIniDataParser();
// Parse the ini file with the settings
IniData settings = parser.LoadFile(login);
//*strptr = settings;
return settings;
}
}
}
Run Code Online (Sandbox Code Playgroud)
所以我可以访问这样的设置:
settings.ini['some']['settings'];
Run Code Online (Sandbox Code Playgroud)
我得到一个错误:
错误329'settings.ini()'是'方法',但用作'类型'
我知道它可能过于noobish,但即时通讯目前正在努力学习C#像这样的实验教比读一本500页的书更多.
您将"ini"定义为方法.为了按原样使用它,您需要键入:
settings.ini()['some']['settings'];
Run Code Online (Sandbox Code Playgroud)
您可以将其更改为属性以解决此问题.
但是,有一件事需要注意 - 你编写的方式,每次调用时ini(),你都在创建(和访问)IniData类的新实例.如果这是一个单独的共享实例,您可能希望使用带有静态属性的延迟初始化:
public class Settings
{
private static IniData ini;
public static IniData Ini
{
get
{
if (ini == null)
{
string login = "Settings.ini";
FileIniDataParser parser = new FileIniDataParser();
ini = parser.LoadFile(login);
}
return ini;
}
}
}
Run Code Online (Sandbox Code Playgroud)
这样,每次调用都将使用相同的实例,并且它只会创建一次IniData类.然后你可以写:
Settings.Ini['some']['settings'];
Run Code Online (Sandbox Code Playgroud)