在 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()
的简洁答案,所以我不会重复)
关于c# - 查找类是否继承接口(interface)的更有效方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3774986/