[英]Generic method to return instance of child class in List of parent classes
我正在尝试做某事,但我不知道该如何称呼/命名,也找不到在Google上有用的东西。 我有基础课
public class Parent{/*some code here*/}
和儿童班
public class Child1:Parent{/*more code*/}
public class Child2:Parent{/*expended behaviour*/}
如果我创建
List<Parent> children = new List<Parent>();
我可以很高兴地将所有子级都放入该列表中,但是我很难编写用于检索它们的通用方法。 像这样:
public T GetChild<T>()
{
var child = children.Find(c => c.GetType() == typeof(T));
if (child == null)
return default(T);
return child;
}
编译器在最后一行抱怨,如果我尝试将child
明确地转换为T
,它还会抱怨更多。 我该怎么办,请告知。
您可以使用OfType
方法获取特定类的所有实例。 children.OfType<T>();
然后,如果您需要一个实例,则可以使用First
或FirstOrDefault()
方法。
public T GetChild<T>()
{
var child = children.OfType<T>().FirstOrDefault();
if (child == null)
return default(T);
return child;
}
要不就
public T GetChild<T>()
{
return children.OfType<T>().FirstOrDefault();
}
您可以使用“ is”关键字在多个孩子面前检查父母的类型,以找出他们的类型。 就像是:
if(child是Child1)返回Child1; 否则返回Child2;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.