我有一个控件RadTabStrip,它包含:public RadTabCollection Tabs { get; }。类RadTabCollection继承自:public class RadTabCollection : ControlItemCollection, IEnumerable, IEnumerable。
现在,我有一个CormantRadTab列表。这个类继承自:public class CormantRadTab : RadTab, ICormantControl 我的目标是用RadTabCollection填充CormantRadTab列表。目前,我已经实现了以下内容:
我觉得我应该能够做以下类似的事情:
但是这与重载签名 New List 所期望的不匹配。如果我尝试将 AsEnumerable 强制转换为 CormantRadTab,我会收到其他错误提示。
正确的方法是什么?
现在,我有一个CormantRadTab列表。这个类继承自:public class CormantRadTab : RadTab, ICormantControl 我的目标是用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>());
但是这与重载签名 New List 所期望的不匹配。如果我尝试将 AsEnumerable 强制转换为 CormantRadTab,我会收到其他错误提示。
正确的方法是什么?
Cast
,这样如果出现意外的非CormantRadTab值,我会看到异常而不是默默地忽略这些值。 - Jon Skeet.OfType<>
所能做的事情 - 获取你感兴趣类型的项目。比我的以前方法要干净得多,它使用了一些.Where
来获取我所需类型的元素,然后跟着一个.Cast<>
。 - Richard Ev