كيف يمكن لكائن ما الحصول على مرجع لفئة موجودة في مجموعة مختلفة (وغير مرجعية)؟

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

سؤال

لدي مشروعين:أ/ب.المشروع أ هو المشروع الذي يحتوي على كافة أشكال Winform المرتبطة بالكائنات الموجودة في B (العناصر المنطقية)

A له كائن من النوع A.

B لديه كائنات من النوع B.Serializer B.Logic

الآن، A لديه مرجع إلى B (ولكن B لا يحتوي على مرجع إلى A) ويحتوي A.Form على متغير عضو من النوع B.Logic.في مرحلة ما، عندما يتم تخزين كافة البيانات في B.Logic، أحاول حفظ هذا الكائن على القرص عن طريق استدعاء B.Serializer(B.Logic).

في هذه المرحلة تظهر لي رسالة خطأ عند إجراء التسلسل تفيد بأن A.From لم يتم وضع علامة عليه كقابل للتسلسل.

لكن المشروع B لا يحتوي على أي إشارة إلى A على الإطلاق، وحتى لو كان لديه عضو يشير إلى A.Form بطريقة أو بأخرى، فلا ينبغي حتى تجميعه.

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

المحلول

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

    [NonSerialized]
    private SomeType foo;

أو مع الأحداث الشبيهة بالميدان:

    [field: NonSerialized]
    public event EventHandler Bar;

وبصرف النظر - من الوصف، أفترض أنك تستخدم BinaryFormatter;شخصيا، لدي تحفظات حول هذا - هو عليه هشة للغاية.أود أن أقترح شيئًا غير خاص بالتنفيذ؛ XmlSerializer, شبكة بروتوبوف, Json.NET, ، إلخ.

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