هل هناك أي طريقة لإخفاء/تسطيح الأنواع الأساسية في عقود بيانات خدمة WCF؟

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

  •  29-09-2019
  •  | 
  •  

سؤال

النظر في مثال بسيط التالية:

[DataContract("{0}Base")]
public class Base<T> where T : Entity<T>
{
    // Common methods & properties.  No WCF exposed properties
}

[DataContract]
public class Employee : Base<Employee>
{
    // WCF exposed properties
}

لا تحتوي قاعدة الفئة الأساسية على خصائص ذات أهمية لمستهلكي خدمة WCF ، لكن WCF يجبرني أيضًا على التعليق على الفئة الأساسية مع سمة [DataContract]. هذا يظهر بشكل أساسي على عميل الخدمة كما Employee : EmployeeBase مع EmployeeBase كونه فئة فارغة بدون خصائص.

لا أريد فضح Base<T> الفصل للخدمة بهذه الطريقة ، فما هي خياراتي؟

  1. DTO لفئة الموظف - أفضل عدم إضافة هذا التعقيد
  2. "Flatten" التسلسل الهرمي لعقدة DataContract بحيث لا يعرض عقد البيانات للموظف أنه يرث من Base<T>. هل هذا ممكن؟ كيف؟
  3. حل آخر؟

شكرًا.

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

المحلول

يجب أن يكون كل فصل في Hiearchy قابلاً للتسلسل / DataContract. إذا كنت لا ترغب في فضح Hiearchy ، فعليك استخدام DTO أو يمكنك محاولة تنفيذ IdataContractSuroggate لفئة الموظف الخاصة بك.

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