# رتّب النسق من a تنفيذ.

<!--category-- C# -->
<datetime class="hidden">2024-08-08-07-TT17:17</datetime>

## الوحدات الصغيرة

صغيرة ولكن من الممكن أن تكون حلاً مفيداً لمشكلة كنت أواجهها تحديداً، كيفية توليد واجهة من إدخال سلسلة نصية حيث أن المسند صالح دائماً لكنه فريد لأي سلسلة إدخال.

إحتجتُ إلى هذا من أجل [مولد مولدات RSSSSS](/blog/addinganrssfilewithaspnetcore) حيث أردت توليد نموذج لكل عنصر في التلقيم والذي كان قابلاً للتكرار وفريداً لكل عنصر.

واتضح أن `XxHash128` هو نوع من الكمال لهذا كما أنه يعطي دائما a 128 بت (أو 16 بايت) hash. هذا يعني أنّه يمكن استخدامه لتوليد رمز تعريفي من مدخل سلسلة نصي بدون 'array'. koby through.

```csharp
     public  static string ToGuid(this string  name)
    {
        var buf = Encoding.UTF8.GetBytes(name);
        var guid = XxHash128.Hash(buf);
        var guidS =  string.Format("{0:X2}{1:X2}{2:X2}{3:X2}-{4:X2}{5:X2}-{6:X2}{7:X2}-{8:X2}{9:X2}-{10:X2}{11:X2}{12:X2}{13:X2}{14:X2}{15:X2}", 
            guid[0], guid[1], guid[2], guid[3], guid[4], guid[5], guid[6], guid[7], guid[8], guid[9], guid[10], guid[11], guid[12], guid[13], guid[14], guid[15]);
        return guidS.ToLowerInvariant();
    }
```

هذه طريقة بسيطة للتمديد التي تأخذ إدخال سلسلة نصية وترجع داليد. الـ `XxHash128` من `System.IO.Hashing` مُهمّة مكانيّة.

يمكنك بطبيعة الحال استخدام أي خوارزمية الهامش التي تعطي هاش 128 بت. الـ `XxHash128` هو مجرد اختيار جيد كما أنه سريع ويعطي توزيع جيد لقيم البعثرة.

يمكنك أيضاً أن تعيد `new Guid(<string>)` من هذا للحصول على دليل فعلي يمكن استخدامه في قاعدة بيانات أو غير ذلك من حالات الاستخدام المحدد للخطوط التوجيهية.