Dictionary<string, object>
を使用すると、大文字と小文字の区別が正しく行われません。 Dictionary<TKey, TValue>
は、カスタムのIEqualityComparer<TKey>
実装がコンストラクタに提供されることを可能にする。 RouteValueDictionary
はまさにそれとStringComparer.OrdinalIgnoreCase
Dictionary<string, object>
にコンストラクタ渡さん:だから、質問に答えるために
public class RouteValueDictionary : IDictionary<string, object> {
private Dictionary<string, object> _dictionary;
public RouteValueDictionary() {
_dictionary = new Dictionary<string, object>(StringComparer.OrdinalIgnoreCase);
}
public RouteValueDictionary(object values) {
_dictionary = new Dictionary<string, object>(StringComparer.OrdinalIgnoreCase);
AddValues(values);
}
public RouteValueDictionary(IDictionary<string, object> dictionary) {
_dictionary = new Dictionary<string, object>(dictionary, StringComparer.OrdinalIgnoreCase);
}
を:RouteValueDictionary
は大文字と小文字を区別しません。
ソースコードのコードを参照してください。https://referencesource.microsoft.com/#System.Web/Routing/RouteValueDictionary.cs,551a423c96bb6648