在C#中嵌套的分类静态类中find一个值

我需要在一个结构中find一个价值(我脑海中的第一个是一个静态类,但任何东西都会这样做)必须是一个层次结构,如:

public static class SheetGroups { public static class Coverage { public static string sheet1 = "COVC1"; public static string sheet2 = "COVC2"; } public static class IncomeInvestment { public static string Income1 = "IEIC1"; public static string Income2 = "IEIC2"; public static string Income3 = "IEIC3"; public static string Incomes4 = "IEIC4"; public static string Investment1 = "IEIC5"; } } 

这个结构的问题是,我需要组(Coverage和IncomeInvestment)也有值(如嵌套的枚举),另一个问题是我必须实现一个IfExistString方法来查找是否存在一个string值分配。

我一直在寻找一个解决scheme,但我找不到一个干净的方法。 对于那些想知道的人,我需要这个validation一个Excel文件的正确结构,根(SheetGroups)代表一个包含一个不确定数量的Excel文件的zip文件,嵌套类(Coverage和IncomeInvestment)是Excel文件,然后我有表格(COVC1,COVC2等),然后我打算再多一个级别,在每张表格中都有一列表格。

谢谢

奥马尔

我相信这应该是更容易处理,如果你使用字典内的字典内的词典[…] aproach:

 // I'm using collection initializers here! var groups = new Dictionary<string, Dictionary<string, string>> { { "Coverage", new Dictionary<string, string> { { "sheet1", "COVC1" }, { "sheet2", "COVC2" } // And so on... } }, { "IncomeInvestment", new Dictionary<string, string> { { "Income1", "IEIC1" } // And so on... } } }; 

现在你可以这样访问值:

 string sheet1 = groups["Coverage"]["sheet1"]; 

…或者您可能使用开箱即用的IDictionary<TKey, TValue>.ContainsKey(System.String)方法检查是否存在某个键。

我相信这种方法可以简化您的任务,您可以使用标准的开箱即用字典function来search,validation或访问其值。

你可以通过使用reflection和LINQ来获得字典@matías,像这样:

 var groups = typeof(SheetGroups).GetNestedTypes() .ToDictionary(k1 => k1.Name, v1 => v1 .GetFields().ToDictionary(k2 => k2.Name, v2 => (string)v2.GetValue(null))); 

组variables将是Dictionary<string, Dictionary<string, string>>