WCF مع الكائنات المشتركة والفئات المشتقة على العميل

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

سؤال

لدي خدمة WCF وأنا أشارك أنواعًا مع عميل في مجموعة مشتركة. إذا قام العميل بإنشاء فئة مشتقة ، فهل من الممكن نقل النوع المشتق إلى الخدمة حتى أتمكن من قراءة الخصائص المضافة من خلال التفكير؟

لقد حاولت ولكن لدي مشاكل مع الأنواع المعروفة لأن الخدمة لا تعرف كيفية إلغاء تخصيص النوع المشتق.

[Serializable]
public abstract class Car : ICar
{........

// على العميل:

[Serializable]
public class MyCar : Car
{......

عند تمرير MyCar إلى الخدمة ، أحصل على استثناء من الشكوى من المعروف ، لكن لا يمكنني إضافة هذا على الخادم لأنني لن أعرف ما الذي سيرسله العميل وأريد التعامل مع خصائص إضافية من خلال التفكير.

من الممكن تسجيل أنواع العملاء باعتبارها الأنواع المعروفة في وقت التشغيل؟
هل هذا هو الحل ربما؟http://blogs.msdn.com/b/sowmy/archive/2006/03/26/561188.aspx

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

المحلول

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

لماذا تحتاج إلى معرفة خصائص إضافية على الخادم؟

نصائح أخرى

أعتقد أن هناك طريقة.

أتذكر بشكل غامض أنه عندما درست WCF ، قابلت ExtensionData والتي يجب أن تكون آلية للحصول على كل ما لا يتطابق مع تسلسل الفصل. على سبيل المثال ، إذا قمت بتمكين extensiondata وأنت في هذا الموقف

//Server
public class GenericRQ
{
    public string GenericProperty {get;set;}
}


public Service GenericService
{
    Public void GenericMethod(GenericRQ RQ)
    {
    }

}

// client

Public class MoreSpecificRQ : GenericRQ
{
    public string SpecificProperty {get;set;}
}

في

Public void GenericMethod(GenericRQ RQ)
    {
    // the serializer adds automatically in RQ.ExtensionData everything that has come and that does not match the class GenericRQ.

    }

حول كيفية تمكين extensionData من البحث بسهولة على الويب

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