首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring.net注入字典顺序问题?

Spring.net注入字典顺序问题?
EN

Stack Overflow用户
提问于 2011-09-10 09:26:40
回答 1查看 1.4K关注 0票数 2

我按照以下顺序使用spring.net注入一个Dictionary<string,string>

代码语言:javascript
复制
<object id="dictLang" type="System.Collections.Generic.Dictionary&lt;string,string&gt;">
  <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迭代它时,它输出如下:

代码语言:javascript
复制
code=en-US,name=英文
code=th-TH,name=泰文
code=zh-CN,name=中文

我发现它是按钥匙订购的,我怎么才能维持我注射的顺序呢?

当我手动创建字典时:

代码语言:javascript
复制
Dictionary<string, string> dic = new Dictionary<string, string>();
            dic.Add("zh-CN", "中文");
            dic.Add("en-US", "英文");
            dic.Add("th-TH", "泰文");

这是相同的顺序,当我迭代它,这太奇怪了!

我考虑过使用OrderedDictionary,但我不知道如何注射。

EN

回答 1

Stack Overflow用户

发布于 2011-09-10 09:41:13

Generic.Dictionary的任何“排序”都是由pfm完成的,不能依赖-- Spring.net的注入导致了一个稍微不同的关键迭代顺序(可能是排序的),这只是运气,不能依赖。

注意,注入的字典被传递给一个IDictionary本身作为构造函数参数,使其与手动代码不完全相同。将其与以下方面进行比较:

代码语言:javascript
复制
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“部分。(大多数“专门”藏品都很平淡无奇。)

编码愉快。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7370823

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档