هل من الممكن استخدام Protobuf-Net مع آلية Iserializable؟

StackOverflow https://stackoverflow.com/questions/2200896

  •  18-09-2019
  •  | 
  •  

سؤال

لدينا مشروع يستخدم التسلسل عن طريق تنفيذ Iserializable واستخدام BinaryFormatter. نحن ننتقل إلى .NET المدمجة التي لا تملك فئة BinaryFormatter. كنت أتساءل عما إذا كان بإمكاننا استخدام Protobuf-Net. هل يمكننا توجيه Protobuf-Net لاستخدام GetObjectData () للاستسلالية؟ على وجه التحديد، أريد معرفة كيفية استخدام دالة Serializer.Serialize (SerializableInfo، Iserializable).

وأضاف أنني نظرت إلى التعليمات البرمجية المصدر وأرى ذلك على الرغم من أن الوظيفة

Serializer.Serialize (SerializableInfo، T T) حيث لا يستخدم Iserializable القيد هو Iserializable على الإطلاق. لماذا أعلن ر أن تكون iserializable؟

هل كانت مفيدة؟

المحلول

ال ISerializable دعم موجود (في الوقت الحالي) كآلية لحقن Protobuf-Net في منتصف واجهات برمجة التطبيقات الحالية التي تستخدمها BinaryFormatter - على سبيل المثال، يمكنك القيام بذلك لتقليل النفقات العامة لإطلاق النار أو (Serialized) حالة الدورة. ومع ذلك، فإن هذا لا يزال ينتج عنه BLOB صافي PB في منتصف BinaryFormatter المجمع (على وجه الخصوص، يحدد رأس BF BF تجميع نوع الخرسانة-Qualfied-qualfied).

إعادة سؤال حول القيد - هذا ببساطة للمساعدة في توجيه الاستخدام؛ أن API هو فقط مقصود لاستخدامها كجزء من هذا الحقن في BinaryFormatter عبر ISerializable. وبعد خلاف ذلك هو المفضل فقط استخدام Stream API مقرها.

إذا كنت تبحث في CF، ثم بالطبع BinaryFormatter يتوقف عن أن تكون مفيدة، ولكن Stream API مقرها على ما يرام. يعمل على CF، ولكن يجب أن تلاحظ أنه بالنسبة للنماذج مع الكثير من الفصول الدراسية، هناك حاليا بعض مواطن الخلل على CF الناجمة عن إفراط في استخدام الأجهزة ("الطريقة المفقودة" أو بعضها). والخبر السار هو أنني صنع تطور جيد على بعض إعادة صياغة أن الخنادق هذا، مما يجعلها أكثر استقرارا في الأطر الأصغر.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top