سؤال

منفرج أنا تسلسل كائن نوع مكتبة الطرف الثالث مع BinaryFormatter. وبعد يحاول المجمع الذي لا يشير هذه المكتبة إلى تحيز بايت. هل ستعمل؟

لا أتوقع أن يتم وضعها إلى النوع الصحيح، أريد فقط استرجاعه ك object مثيل حتى أتمكن من تجميعها وتسلسلها مرة أخرى.

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

المحلول

هذا يجب أن يعمل بشكل جيد، ولكن فقط إذا تم نشر تلك المكتبة مع التطبيق. لا تحتاج إلى مرجع مباشر إليه.

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

نصائح أخرى

رقم؛ إذا لم يتم الرجوع إلى النوع نفسه (بطريقة ما من خلال بعض التجمع تحميلها)، فلا يمكن إرساء مثيل. حتى لو كنت لا تحتاج (أو تريد) للإشارة إلى مثيل طريقة مكتوبة بشدة، يجب أن يكون الكائن نفسه مثالا لهذه النوع.

إذا كانت الجمعية متاحة (واكتشاف)، فسيتم تحميلها، ولكن بطريقة صارمة رقم, ، لن تكون قادرا على التحمل نوع من التجميع غير المعروف تماما.

إذا كنت تحاول فقط الحصول على المعلومات المتنقلة مؤقتا حتى تتمكن من تجميعها، فهل يمكنك فقط قراءة البايت الخام من الدفق المتسلسل والجماعة لهم؟ ربما في أ List<byte[]> نموذج؟ هذا يفترض أن الوجهة النهائية يمكن أن تجعل بعض الافتراضات حول المعلومات الممثلة بكل صفيف بايت.

لا، لن يعمل، من أجل التحيز بوجود كائن تحتاج إلى الرجوع إلى الجمعية حيث يتم تعريف الكائن.

نعم، إذا قمت بإنشاء Binder Serialization، فيمكنك استخدام النوع إلى نوع مختلف. لكنك لن تتمكن من إنشاء مثيل للنوع الأصلي دون تعريف (من الممكن أن يكون لديك التجميع في متناول اليد)

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