2011-09-10 9 views
2

私はこの順序で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=中文 

私はそれは、 キーによって順序付けされました私はそれを注入するとどのように私は注文を維持することができますか?

私は手動で辞書を作成する場合:

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の注入はわずかに異なるキーの繰り返し順序(ソートするだことを多分1)につながるという事実があるだけ幸運とは、に頼ることはできません。

注入された辞書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」の部分には答えられません。 (ほとんどの「特化した」コレクションは非常に圧倒的です。)

ハッピーコーディング。

関連する問題