在c#中找到一个嵌套的分类静态类的值
本文关键字:嵌套 一个 分类 静态类 | 更新日期: 2023-09-27 18:10:32
我需要在一个结构中找到一个值(我首先想到的是一个静态类,但任何东西都可以),它必须是一个分层结构,如:
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)也有值(像一个嵌套的enum),另一个问题是,我必须实现一个IfExistString方法来查找字符串是否存在于分配的值中。
我一直在寻找一个解决方案,现在,但我找不到一个干净的方法。对于那些想知道的人,我需要这个来验证Excel文件的正确结构,根(SheetGroups)代表一个包含一些不确定的Excel文件的zip文件,嵌套类(Coverage和IncomeInvestment)是Excel文件,然后我有表格(COVC1, COVC2等),然后我计划再增加一个级别,在每个工作表中都有表格列。
感谢奥马尔我相信如果你使用dictionary inside dictionary inside dictionary[…]) 的方式:
// 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)
方法检查某个键是否存在!
我相信这种方法可以简化您的任务,并且您可以使用标准的、开箱即用的字典功能来搜索、验证或访问其值。
您可以像这样使用反射和LINQ获得提到的字典@matías:
var groups = typeof(SheetGroups).GetNestedTypes()
.ToDictionary(k1 => k1.Name, v1 => v1
.GetFields().ToDictionary(k2 => k2.Name, v2 => (string)v2.GetValue(null)));
groups变量的类型为Dictionary<string, Dictionary<string, string>>