gpt4 book ai didi

c# - 将通用类型对象转换为子类型

转载 作者:行者123 更新时间:2023-11-30 14:29:00 25 4
gpt4 key购买 nike

我的代码中有以下场景:

class Document
{}

class Track : Document
{}

class ViewListClickHandler
{
// I can't change that signature, it's provided by a library I use.
protected override void click(object theList, int index)
{
// I here need to cast "theList" to IList<T> where T : Document
}
}

我现在的问题是(如评论中所写):

我该如何转换 theList到类似 IList<T> where T : Document 的类型?

这种情况下的困难在于,我可以获得任何类,扩展 Document在该列表中。这对我来说是一样的。我只想将其转换为包含一些文档的列表。

编辑:

抱歉,忘了说了。 theList sometimes 是一个对象,与 IList<Document> 兼容, 有时 IList<Track>或一般类型化为 Document 的其他子类型.

我需要一次性完成。我还有另一个示例,它不是 IList,而是另一个通用类型的类,我无法在其中循环。

最佳答案

您可以使用 OfType :

var documents = theList.OfType<Document>();

关于c# - 将通用类型对象转换为子类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27604057/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com