2011-09-10 3 views
2

I는이 순서 Dictionary<string,string> 주입 spring.net을 사용Spring.net에서 사전 주문 질문을 할 수 있습니까?

<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를 사용가이 출력 :

code=en-US,name=英文 
code=th-TH,name=泰文 
code=zh-CN,name=中文 

I 그것이, 키에 의해 지시되는 발견 내가 주사를 맞으면 어떻게 그 순서를 유지할 수 있니? 내가 수동으로 사전을 만들 때

는 :

Dictionary<string, string> dic = new Dictionary<string, string>(); 
      dic.Add("zh-CN", "中文"); 
      dic.Add("en-US", "英文"); 
      dic.Add("th-TH", "泰文"); 

내가 그것을 반복 할 때, 그 이상한 같은 순서입니다입니다!

나는 OrderedDictionary을 사용하는 것에 대해 생각했지만 주입 방법을 모르겠습니다.

답변

1

Generic.Dictionary<K,V>pfm으로하고 신뢰할 수 없습니다의 "주문"- spring.net의 주입은 약간 다른 키 반복 순서 (정렬 할 수 보인다 것을 아마도 하나)에 이르게한다는 사실이 단지 행운과 은 (는)에 의존 할 수 없습니다.

삽입 된 사전 was passed an IDictionary itself이 생성자 인수로 사용 설명서 코드와 동일하지 않습니다. 와 비교 : 위의 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); 

, 그러한 "온도에 대해 다른 default capacity 같은 놀이에 다른 요인있을 가능성이 있습니다 ".

그러나 "OrderedDictionary"부분에 응답 할 수 없습니다. (대부분의 "특수"컬렉션은 매우 실망 스럽습니다.)

해피 코딩.

관련 문제