C#访问方法重定向

Ano*_*ous 3 c# object

伙计们,我真的很想要这个,但我陷入了困境,我无法想到解决方案:

我发现了一个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页的书更多.

Ree*_*sey 5

您将"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)