باستخدام مكتبة فئة .NET 2.0 من خدمة Silverlight WCF ، تظل العقارات العامة غير معرضة

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

  •  22-09-2019
  •  | 
  •  

سؤال

إليك مشكلة خفية بعض الشيء التي أتعامل معها ، وسأقدر أي مساعدة.

لدينا مشروعنا على وضع الإنتاج ، الذي تم إنشاؤه باستخدام .NET 2.0. لقد قمنا مؤخرًا بتطوير تطبيق Silverlight خارجيًا لحل 2.0 ، وهو "يتحدث" مع خدمة WCF. تستهلك هذه الخدمة DLLs ننسخها من مجلدات نشر الحلول 2.0 ، من أجل الوصول إلى وظائف من حلنا الأصلي.

تعرض خدمة WCF العديد من الأساليب والكائنات التي تنشأ من حل 2.0. من الواضح ، أنه يستخدم [DataContract] S و [Datamember] داخليًا ، ولا تتوفر تلك في حلنا الأصلي (نظرًا لأنها .NET 2.0 ، وفي هذه المرحلة ، لا تُعد ترقية إلى 3.5 خيارًا). لحسن الحظ ، فإن WCF قادر على التعامل مع أشياءنا القابلة للتسلسل كما لو تم تعريفها على أنها عقود ، ولكن لسبب غريب فقط يتم تسلسل متغيرات الأعضاء (حتى لو تم تعريفها على أنها خاصة!) ؛ الخصائص ، حتى القابلة للتسوية والعامة لا يتم تسلسلها أبدًا.

فئات الكائنات التي نحتاجها المكشوفة لها [Serializable ()] تعريف عليها. لقد نظرت حولي ولم أتمكن من العثور على حل / شرح جيد لهذا. ربما يتعلق الأمر بكيفية .NET 3.0/3.5 هو "رؤية" كائناتي 2.0 (يفترض [Datamember] فقط على المتغيرات وليس على الخصائص).

سؤالي هو كيفية فضح الخصائص العامة فقط ، وليس متغيرات خاصة؟

شكرا مقدما على أي نظرة ثاقبة على هذا.

itamar.

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

المحلول

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

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