我有一个控件,radtabstrip,它包含:public RadTabCollection Tabs { get; }
。类radtabcollection继承自:public class RadTabCollection : ControlItemCollection, IEnumerable<RadTab>, IEnumerable
现在,我有一份考曼塔布的名单。此类继承:public class CormantRadTab : RadTab, ICormantControl<RadTabSetting>
我的目标是用radtabcollection填充cormantradtab列表。目前,我已经实现了:
List<CormantRadTab> oldTabs = new List<CormantRadTab>(Tabs.Count);
foreach( CormantRadTab tab in Tabs)
{
oldTabs.Add(tab);
}
我真的觉得我应该能够做一些事情,比如:
List<CormantRadTab> oldTabs = new List<CormantRadTab>(Tabs.AsEnumerable<RadTab>());
但这与新列表期望的重载签名不匹配。如果我试着投下一个可数的Cormantradtab,我会收到其他错误。
正确的方法是什么?
最佳答案
您可以使用Enumerable.Cast<>
:
var oldTabs = Tabs.Cast<CormantRadTab>().ToList();
或者如果有一些非cormantradtab元素,并且您只想选择cormantradtab元素,请使用
OfType<>
:var oldTabs = Tabs.OfType<CormantRadTab>().ToList();
(在这两种情况下,结果都是
List<CormantRadTab>
类型-使用显式类型或隐式类型,无论您喜欢哪种类型)。