В 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();
}
есть ли более эффективный/лучший/более быстрый способ сделать это? если да, то пожалуйста, дайте мне знать :)
Обратите внимание, что ваша вторая версия фактически возвращает массив 'Plugin', а не' CaptureType'. Вам придется связать его с вызовом 'Select()'. –
@Dean Harding: да, я видел это, но я уверен, что это подходящее решение тоже, и когда это необходимо - этот массив будет выпущен неявно. – zerkms