كم مرة يجب استدعاء طريقة getObjectData الخاصة بكل كائن أثناء التسلسل المخصص؟

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

سؤال

أقوم بتسلسل البيانات في تطبيقي باستخدام تسلسل مخصص ، أي كل فئة من الفصول التي أقوم بتخزينها لها [Serializable] السمة والأدوات ISerializable. الرسم البياني الكائن الذي يجري تسلسله معقد معقول مع الكثير من المراجع المتقاطعة بين الكائنات/الفئات. التسلسل يعمل, ، لكنها بطيئة جدا. :(

من خلال وضع نقطة توقف في كل فئة ذات صلة GetObjectData الطريقة ، لقد وجدت أنني أحصل على الكثير والعديد من الزيارات أكثر من لدي أشياء.

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

وإذا كان الأمر كذلك ، فهل هناك أي شيء يمكنني القيام به في هذا النهج لتقليل عدد المكالمات إلى فصولي " GetObjectData طُرق؟

شكرًا.

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

المحلول

ال مستندات MSDN لا تضمن فقط مكالمة واحدة لكل مثيل كائن.

هل جربت هذا بتنسيقات مختلفة؟ هناك تعليقات هنا إلى هذا الحد الذي تم فيه القيام بالعمل المحدد لتحسين هذا. خصيصا للنيلي (ويعرف أيضا باسم WCF).

لا يضمن أن يتم استدعاء هذه الطريقة مرة واحدة فقط لكل مثيل كائن أثناء التسلسل. لذلك ، يجب تنفيذ الطريقة بطريقة تجعل سلوكها هو نفسه بغض النظر عن عدد المرات التي يطلق عليها.

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