返回派生函数中的派生类型
我有一个搜索表单,它执行查询,返回作为 Contact 类的子类的对象列表。
当在 gridview 中使用列表时,仅存在于子类中的属性(例如 HireDate)不会显示,因为列表包含基类的对象(Contact) 。
有没有办法让子类中的 GetContacts 返回 Employee 列表而不是 Contact 列表?或者将 Contact 列表“转换”为 Employee 列表的方法?
提前致谢 !
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);
}
I have a search form that executes queries returning lists of objects that are sub-classes of a Contact class.
When the lists are used in gridviews, properties that only exist in sub-classes (such as HireDate) are not displayed because the list contains objects of the base class (Contact).
Is there a way to make GetContacts in the sub-class return a list of Employee instead of a list of Contact ? Or a way to "cast" the list of Contact into a list of Employee ?
Thanks in advance !
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);
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
是的,泛型可以在这里提供帮助:
或者,您可以使用 LINQ OfType 方法 从您的集合中获取所需类型的所有联系人:
Yes, generics can help here:
Alternatively, you can use the LINQ OfType method to get all contacts of a desired type from your collection:
您可以使用泛型,如下所示:
这允许您限制
ContactManager
与特定的特定基本类型(即Contact
)一起使用,并进一步使用特定类型(< code>Contact)以使用强类型进行深入分析,例如使用Employee
。You could use generics, something like this:
This allows you to constrain
ContactManager
to work with specific a specific base type (i.eContact
) and further use the specific type (ofContact
) to drill down with strong typing, for instance, withEmployee
.