【发布时间】:2014-12-25 17:48:33
【问题描述】:
我有一个静态类来保存字典和 2 个 get 方法来访问它
这是我的课:
public static class ConfiguraCuadros
{
public static Dictionary<string,Dictionary<string,Dictionary<string,Dictionary<string,string>>>> GetDictionary()
{
// Try to get the result in the static Dictionary
return _configcuadros;
}
public static Dictionary<string, Dictionary<string, Dictionary<string, string>>> GetHoja(string key)
{
// Try to get the result in the static Dictionary
Dictionary<string, Dictionary<string, Dictionary<string, string>>> result = new Dictionary<string, Dictionary<string, Dictionary<string, string>>>();
if (_configcuadros.TryGetValue(key, out result))
{
return result;
}
else
{
return null;
}
}
public static readonly Dictionary<string, Dictionary<string, Dictionary<string, Dictionary<string, string>>>> _configcuadros = new Dictionary<string, Dictionary<string, Dictionary<string, Dictionary<string, string>>>>
{
{ "Formato01", //this is just a hint, the dictionary is much more extensive
new Dictionary<string, Dictionary<string, Dictionary<string, string>>>
{
{
"F01C01A",
new Dictionary<string, Dictionary<string, string>>
{
{
"X",
new Dictionary<string, string>
{
{ "key1" , "value1" },
{ "key2" , "value2" },
{ "key3" , "value3" },
}
},
}
},
}
},
}
}`
当我使用getter方法时,
ConfiguraCuadros.GetDictionary();
抛出异常:
mscorlib.dll 中出现了“System.ArgumentException”类型的第一次机会异常 “ConfiguraCuadros.GetDictionary()”引发了“System.TypeInitializationException”类型的异常 base: {"'beDGRAIC.ConfiguraCuadros' 的类型初始化器抛出异常。"} 类型名称:“beDGRAIC.ConfiguraCuadros”或
'ConfiguraCuadros.GetHoja("Formato01")' 引发了类型为 'System.TypeInitializationException' 的异常 base: {"'beDGRAIC.ConfiguraCuadros' 的类型初始化器抛出异常。"} 类型名称:“beDGRAIC.ConfiguraCuadros”如您所见,我的意图是拥有一个静态字典。我认为问题出在字典声明中……但我看不到在哪里……
以防万一,“beDGRAIC”是我的命名空间。
感谢您的帮助!
【问题讨论】:
-
读取内部异常。
-
你能不能用
Tuple代替多层嵌套的Dictionary -
你是认真的
Dictionary<string,Dictionary<string,Dictionary<string,Dictionary<string,string>>>>吗?在修复TypeInitializationException之前,请考虑一个好的数据结构。
标签: c# .net dictionary static-classes static-class