3 Stimmen

Gibt es eine .Net 1.1 kompatible String.GetHashCode Implementierung im .Net 2.0 Code?

Ich habe eine vorhandene App, in der ich den Fehler gemacht habe, String.GetHashCode zu verwenden und sie auf die Festplatte zu schreiben. Nun, da ich die App auf .Net 2.0 aktualisiere, merke ich, dass diese Entscheidung zurückgekommen ist, um mich zu beißen.

Ich würde gerne wissen, ob jemand über eine .Net 2.0-Implementierung eines mit .Net 1.1 kompatiblen String-Hashing-Algorithmus Bescheid weiß.

Die beste Lösung wäre natürlich, mir eine Zeitmaschine zu kaufen und zurück ins Jahr 2002 zu reisen und mich selbst ins Schienbein zu treten, weil ich überhaupt in Erwägung gezogen habe, den Hashcode auf diese Weise zu verwenden. Da dies anscheinend nicht möglich ist, suche ich nach einer Umgehungslösung. Ich habe bestehende Benutzer mit diesen Daten auf ihren Systemen, daher ist es für mich nicht möglich, eine große Konvertierung der Hashes vorzunehmen oder etwas in der Art.

Mit der Umstellung auf 2.0 werde ich den Code natürlich so aktualisieren, dass er MD5 oder SHA verwendet.

Ich habe in Betracht gezogen, den Quellcode von String.GetHashCode aus Mono zu extrahieren, aber da Mono GPL ist und meine App kommerziell ist, ist das wirklich keine Option. Ich weiß nicht einmal, ob die Mono-Implementierung mit der MS .Net-Implementierung kompatibel ist, da der Vertrag für GetHashCode keine Kompatibilität erfordern würde.

Irgendwelche Ideen?

6voto

Alex Brasetvik Punkte 10472

Du bist nicht der Einzige, es scheint: Bekommen von .NET 1.1 CLR String Hash Codes Im .NET 2.0 CLR

Das führt zu BackCompatibleStringComparer, welches (angeblich, ich kann es nicht überprüfen) die Implementierung des alten GetHashCode() zeigt.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X