سؤال

وأنا محاولة الميناء C # تطبيق ل. NET (خادم العميل)، وأنا الوقوع في مشاكل مع التسلسل.

والعميل لينكس كمسلسل وجوه، ولكن خادم Windows غير قادر على إلغاء تسلسل مما أتاح الخطأ:

وSystem.Runtime.Serialization.SerializationException
الميدان "MarshalByRefObject + __ الهوية" لا توجد في الطبقة

ويتم إلغاء التسلسل عبر BinaryFormatter:

BinaryFormatter formatter = new BinaryFormatter();
formatter.Deserialize(data);

والطبقة المعنية لديها سمة للتسلسل، ويرث من MarshalByRefObject. إذا قمت بإزالة ميراث MarshalByRefObject، فإنه يعمل بشكل جيد. كل شيء يعمل بشكل جيد في ويندوز، وذلك انا افترض ان هذا هو قضية محددة مونو.

وأي مساعدة / المشورة سيكون موضع تقدير كبير ^ _ ^

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

المحلول

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

يرجى تقديم حالة اختبار مع مونو: http://www.mono-project.com/Bugs

لتغلب على هذا يمكنك أن تفعل التسلسل المخصص الخاص بك لصفك.

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