كيفية الحصول على طول TypeCode
-
06-07-2019 - |
سؤال
وأنا متأكد من أن هذا هو السؤال السهل، ولكن أنا لا أملك جوابا ل. وهنا يكمن senario ومسألة.
ولدي مجموعة التي تم تخزينها استخدام في شكل معين. يحتوي على شكل سجل رأس مع سجلات التفصيل muntiple بعده. رأس سجل يقول لي ما TypeCode كان يستخدم لتخزين البيانات، على سبيل المثال Int32.
ولدي روتين التي تأخذ بايت [] مجموعة وتحويل البيانات بايت إلى انها شكل مناسب في C #. هذا الروتين يحتاج عدد مناسب من وحدات البايت لإجراء عملية التحويل ناجحة.
س. فكيف يمكنني الحصول على طول بايت من TypeCode نظرا لتمرير إلى وظيفة تحويل دون الحاجة إلى ترميز ثابت طول لكل نوع؟
المحلول
وبالنظر إلى أن TypeCode
هو مجرد تعداد مجموعة ثابتة من القيم، يمكن بسهولة من الصعب رمز قاموس منهم، منها مثلا.
private static readonly Dictionary<TypeCode,int> TypeCodeLength =
new Dictionary<TypeCode,int> {
{ TypeCode.Int32, 4 },
{ TypeCode.Int64, 8 },
{ TypeCode.Char, 2 },
// etc
}
و(ومن شأن حل يعادل يكون استخدام عبارة التبديل / حالة - هي في الواقع ما يعادل إذا كنت فقط بما في ذلك القيم)
وبعضها، مثل string
وobject
سيكون متغير على الرغم - وغيرها سوف يعتمد على كيفية كنت ترميز الأشياء مثل DateTime
وهذا هو ما لم باستخدام تحويل القياسية، لا شيء في إطار ستكون قادرة على إعطائك أطوال. أعرف أن كانوا يرفضون الثابت ترميز عموما عليها، ولكن في هذه الحالة انها فقط في مكان واحد وسيكون الخيار الأسهل.
نصائح أخرى
ووفقا ل كيفية إنشاء نوع من TypeCode ... ، لا يمكنك (دون تبديل شامل). وبطبيعة الحال فإن الاتجاه (من نوع> TypeCode) الآخر هو تافهة.