Spring.net注入字典顺序问题
本文关键字:顺序 问题 字典 注入 net Spring | 更新日期: 2023-09-27 18:08:04
我使用spring.net按以下顺序注入一个Dictionary<string,string>
:
<object id="dictLang" type="System.Collections.Generic.Dictionary<string,string>">
<constructor-arg>
<dictionary key-type="string" value-type="string" merge="0">
<entry key="zh-CN" value="中文" />
<entry key="en-US" value="英文" />
<entry key="th-TH" value="泰文" />
</dictionary>
</constructor-arg>
</object>
当我使用foreach迭代它时,它输出如下:
code=en-US,name=英文
code=th-TH,name=泰文
code=zh-CN,name=中文
我发现它是按键排序的,我怎样才能保持注入后的订单?
当我手动创建字典时:
Dictionary<string, string> dic = new Dictionary<string, string>();
dic.Add("zh-CN", "中文");
dic.Add("en-US", "英文");
dic.Add("th-TH", "泰文");
当我迭代它时,它的顺序是相同的,这很奇怪!
我想用OrderedDictionary
,但我不知道如何注射
Generic.Dictionary<K,V>
的任何"排序"都是由pfm进行的,不能依赖——spring.net的注入导致键迭代顺序略有不同(也许似乎已排序)的事实只是运气,不能依赖。
注意,注入的字典本身作为构造函数参数被传递给了一个字典,这使得它与手动代码不相同。对比:
Dictionary<string, string> temp = new Dictionary<string, string>();
temp.Add("zh-CN", "中文");
temp.Add("en-US", "英文");
temp.Add("th-TH", "泰文");
Dictionary<string, string> dic = new Dictionary<string, string>(temp);
即使上述方法不能产生与spring.net相同的键迭代顺序,也可能有其他因素在起作用,例如"temp"的默认容量不同。
然而,我无法回答"OrderedDictionary"部分。(大多数"专业"系列都很平淡。)
快乐编码。