在不同版本上以不同方式解析文件

Foi*_*itn 5 c# xml version switch-statement

编辑:我已经做了一些关于此的研究,但未能找到解决方案!

我正在从XML文件中读取配置.为某些版本设置配置的布局.此版本位于XML的第一行,易于提取.

我想知道的是,实际解析此文件/获取另一种方法的最佳方法是什么,基于版本(所有4个元素,主要,次要,构建和修订).

现在我想出了这个:

switch (version.Major)
{
    case 0:
        switch (version.Minor)
        {
            case 0:
                switch (version.Build)
                {
                    case 0:
                        switch (version.Revision)
                        {
                            case 0:
                                return VersionNone(doc);
                        }
                        break;
                }
                break;
        }
        break;
}
throw new NotImplementedException();
Run Code Online (Sandbox Code Playgroud)

但我发现这种优雅(根本没有),我觉得有更好的方法可以做到这一点.

有谁可以提供帮助?

And*_*y P 8

对于这样的事情,我很想建立一个行动词典

编辑:已更新以包含文档参数以响应来自OP的评论

    Dictionary<string, Action<XmlDocument>> versionSpecificMethods = new Dictionary<string, Action<XmlDocument>>{
    {"1.0.0.0", DoStuff1},
    {"1.2.3.4", DoStuff2},
    {"3.1.7.182", DoStuff3}};

    private void RunMethodForVersion(string version, XmlDocument someXmlDoc)
    {
        var codeToRun = versionSpecificMethods[version];
        codeToRun.Invoke(someXmlDoc);
    }

    private static void DoStuff1(XmlDocument doc)
    {
        // Insert user code here
    }
Run Code Online (Sandbox Code Playgroud)