هل هناك أي طريقة لإخفاء/تسطيح الأنواع الأساسية في عقود بيانات خدمة WCF؟
-
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>
الفصل للخدمة بهذه الطريقة ، فما هي خياراتي؟
- DTO لفئة الموظف - أفضل عدم إضافة هذا التعقيد
- "Flatten" التسلسل الهرمي لعقدة DataContract بحيث لا يعرض عقد البيانات للموظف أنه يرث من
Base<T>
. هل هذا ممكن؟ كيف؟ - حل آخر؟
شكرًا.
المحلول
يجب أن يكون كل فصل في Hiearchy قابلاً للتسلسل / DataContract. إذا كنت لا ترغب في فضح Hiearchy ، فعليك استخدام DTO أو يمكنك محاولة تنفيذ IdataContractSuroggate لفئة الموظف الخاصة بك.
لا تنتمي إلى StackOverflow