5
確定的なGUIDを作成する方法
このアプリケーションでは、Guid値を持つ属性を持つXmlファイルを作成しています。この値は、ファイルのアップグレード間で一貫している必要があります。したがって、ファイル内の他のすべてが変更された場合でも、属性のguid値は同じままである必要があります。 1つの明白な解決策は、ファイル名とそれらに使用されるGUIDを使用して静的辞書を作成することでした。次に、ファイルを生成するときはいつでも、ファイル名の辞書を検索し、対応するGUIDを使用します。しかし、これは、数百のファイルにスケーリングする可能性があり、GUIDの大きなリストを維持する必要がないため、実行できません。 したがって、別のアプローチは、ファイルのパスに基づいてGuidを同じにすることでした。ファイルパスとアプリケーションディレクトリ構造は一意であるため、Guidはそのパスに対して一意である必要があります。したがって、アップグレードを実行するたびに、ファイルはパスに基づいて同じGUIDを取得します。私はそのような「決定論的ガイド」を生成するクールな方法を見つけました(Elton Stonemanに感謝)。それは基本的にこれを行います: private Guid GetDeterministicGuid(string input) { //use MD5 hash to get a 16-byte hash of the string: MD5CryptoServiceProvider provider = new MD5CryptoServiceProvider(); byte[] inputBytes = Encoding.Default.GetBytes(input); byte[] hashBytes = provider.ComputeHash(inputBytes); //generate a guid from the hash: Guid hashGuid = new Guid(hashBytes); return hashGuid; } したがって、文字列を指定すると、Guidは常に同じになります。 これを行う他のアプローチまたは推奨される方法はありますか?その方法の長所と短所は何ですか?