سؤال

لدي نموذج بحث ينفذ الاستعلامات التي تعيد قوائم الكائنات التي هي فئات فرعية من أ اتصل بنا صف دراسي.

عند استخدام القوائم في غريدفيوس ، الخصائص التي توجد فقط في الفئات الفرعية (مثل تاريخ التوظيف) لا يتم عرضها لأن القائمة تحتوي على كائنات من الفئة الأساسية (اتصل بنا).

هل هناك طريقة لجعل الحصول على اتصالات في الفئة الفرعية إرجاع قائمة موظف بدلا من قائمة اتصل بنا ?أو وسيلة ل" يلقي " قائمة اتصل بنا في قائمة موظف ?

شكرا مقدما !

public abstract class Contact  
{  
    public string Name { get; set; }  
}

public class Employee : Contact  
{
    public DateTime HireDate { get; set; }
}

public abstract class ContactManager  
{  
     public abstract List<Contact> GetContacts(string searchValue);  
}  

public class EmployeeManager : ContactManager  
{  
     public abstract List<Contact> GetContacts(string searchValue);  
} 
هل كانت مفيدة؟

المحلول

نعم، يمكن للأرداء المساعدة هنا: giveacodicetagpre.

بدلا من ذلك، يمكنك استخدام Linq oftype الطريقة للحصول على الكلجهات الاتصال من النوع المطلوب من مجموعتك: giveacodicetagpre.

نصائح أخرى

يمكنك استخدام الأدوية الجنيسة ، شيء من هذا القبيل:

public abstract class ContactManager<TContactType> 
    where TContactType : Contact 
{
    public abstract List<TContactType> GetContacts(string searchValue);  
}

public abstract class EmployeeManager : ContactManager<Employee> 
{
    ...
}

هذا يسمح لك بتقييد ContactManager للعمل مع محددة نوع قاعدة محددة (أي Contact) ومزيد من استخدام نوع معين (من Contact) للتنقل مع الكتابة القوية ، على سبيل المثال ، مع Employee.

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