在C#中,当前我正在执行以下代码,以过滤出从传递给方法的CaptureType继承的一组特定的类。
public static CaptureType[] ListPluginsWith<CaptureType>()
{
List<CaptureType> plugins = new List<CaptureType>();
foreach (var plugin in Bot.AutoPlugins)
{
CaptureType plug;
try
{
if ((plug = (CaptureType)plugin.Interface) != null)
{
plugins.Add(plug);
}
}
catch
{
//doesn't inherit
}
}
return plugins.ToArray();
}
有没有更有效/更好/更快的方法?如果是这样,请让我知道:)
最佳答案
if (plugin.Interface is CaptureType)
{
// inherits
}
甚至
return Bot.AutoPlugins.Where(i => i.Interface is CaptureType).ToArray();
UPD:如果强烈要求返回
CaptureType
:return Bot.AutoPlugins.Where(i => i.Interface is CaptureType)
.Select(i => i as CaptureType)
.ToArray();
(是的,现在看起来有点肿,但是在该线程中还有一个
OfType()
的简洁答案,所以我不再重复)