在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>>