Zastanawiasz się, czy jest to możliwe.Używanie zeszytów/słowników z kluczami ciągów i rozróżnianie wielkości liter w wyszukiwaniu
Mamy bibliotekę 3rd Party, który zawiera informacje identyfikujące o użytkownikach ...
Głównym interakcja z biblioteki jest przez HashTable która jest zaklinowana z ciągiem, i zwraca Graph Object informacji dla tego klucza .
Problem polega na tym, kluczem jest oczywiście wielkość liter, ale to, co otrzymujemy od użytkowników przeglądarki niekoniecznie pasuje sprawę ... (Często dostać klucz pełni lowercase'd)
I Zastanawiam się, czy da się zrobić przypadek Nieczułe wyszukiwanie klucza przed hashtable.
np.
Hashtable ht = new Hashtable();
ht.Add("MyKey", "Details");
string result = ht["MyKey"];
string result = ht["MYKEY"];
string result = ht["mykey"];
Na off szansa moglibyśmy przesłać zgłoszenie do pomocy technicznej do firmy, aby dodać tę funkcjonalność, czy są jakieś inne datastructures (czyli nowe kolekcje generyczne/słowników), które obsługują tę funkcjonalność
Wreszcie będzie możliwe jest przesłonięcie metody System.String GetHashCode() na , dzięki czemu wszystkie ciągi niezmienników przypadku zwracają ten sam kod skrótu ... np. Myślę, że to jest bez nawiązań jako string
jest szczelna klasa
Cheers jeśli ktoś ma jakieś sugestie
jako na bok: jeśli korzystasz z .NET 3.5 prawdopodobnie powinieneś przestać używać Hashtable itp. - i zacznij używać ogólnych kolekcji. –
Powtórz swój komentarz: może po prostu zadzwoń .ToLowerInvariant() na wszystkie twoje klucze, wtedy. –
* głowa drapania * Ale klawisze znajdujące się w Hashtable nie są ToLowered(). To znaczy. Dostaję pre-built hashtable, który jest instancjonowany/zapełniony wewnątrz dll. a klawisze w HT są rozróżniane na wielkości liter ... Jedyny dostęp do biblioteki dll jest przez program pobierający/indeksujący, gdzie przekazuję klucz, więc nawet jeślibym użył Nieważne, moje klucze na zewnątrz, nie pasowałyby do kluczy W środku. –