ในแอปพลิเคชันของเราเรากำลังสร้างไฟล์ Xml ด้วยแอตทริบิวต์ที่มีค่า Guid ค่านี้จำเป็นเพื่อให้สอดคล้องกันระหว่างการอัพเกรดไฟล์ ดังนั้นแม้ว่าทุกอย่างในไฟล์จะเปลี่ยนไป แต่ค่า guid สำหรับแอตทริบิวต์ก็ควรจะยังคงเหมือนเดิม
วิธีแก้ปัญหาที่ชัดเจนวิธีหนึ่งคือการสร้างพจนานุกรมแบบคงที่พร้อมชื่อไฟล์และคำแนะนำที่จะใช้สำหรับพวกเขา จากนั้นเมื่อใดก็ตามที่เราสร้างไฟล์เราจะค้นหาชื่อไฟล์ในพจนานุกรมและใช้คำแนะนำที่เกี่ยวข้อง แต่ไม่สามารถทำได้เนื่องจากเราอาจปรับขนาดเป็น 100 ไฟล์และไม่ต้องการรักษารายการคำแนะนำจำนวนมาก
ดังนั้นอีกวิธีหนึ่งคือทำให้ 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 จะเหมือนกันเสมอ
มีแนวทางอื่นหรือวิธีที่แนะนำในการดำเนินการนี้หรือไม่? ข้อดีหรือข้อเสียของวิธีนั้นคืออะไร?