C# 如何从泛型列表中提取派生类型?
我有一个具有以下属性的类:C# 如何从泛型列表中提取派生类型?,c#,generics,C#,Generics,我有一个具有以下属性的类: public List<CommitmentItem<ITransaction, ITransactionItem>> CommitmentItems; public List<CapitalCallCommitmentItem> CapitalCallCommitmentItems; 然而,我得到一个错误,说: 错误1无法将类型“Models.CommitmentItem”转换为“Models.CapitalCallCommit
public List<CommitmentItem<ITransaction, ITransactionItem>> CommitmentItems;
public List<CapitalCallCommitmentItem> CapitalCallCommitmentItems;
然而,我得到一个错误,说:
错误1无法将类型“Models.CommitmentItem”转换为“Models.CapitalCallCommitmentItem”
正确的方法是什么?使用
of type
扩展方法
return CommitmentItems.OfType<CapitalCallCommitmentItem>().ToList();
返回committeitems.OfType().ToList();
在代码中,尽管您在
where
子句中过滤子类型,但它仍将返回列表的常规类型OfType
将返回所提供类型的可枚举项。确保它是可转换/可转换/OfType
然后试试看
你已经知道了。以下操作在我的机器上运行良好。结果列表的类型为
list
:
更新:…但是的,
承诺项目。of type
更为优越。问题名称没有任何意义:(@Restutat-这是一个通用问题名称:对于of type,它甚至不必是可铸造的。我知道,但有点……它应该是“of type”:
return CommitmentItems.OfType<CapitalCallCommitmentItem>().ToList();
get
{
return CommitmentItems
.Where(c => c is CapitalCallCommitmentItem)
.Select(c => c as CapitalCallCommitmentItem)
.ToList();
}