public static IEnumerable <Extension> GetRequiredExtensions(this IExtensionReader reader, int extensionId) { var info = reader.GetExtensionByID(extensionId); if (info == null) { yield break; } foreach (var requiredExtension in info.RequiredExtensions) { yield return(requiredExtension); foreach (var extension in reader.GetRequiredExtensions(requiredExtension.id)) { yield return(extension); } } }
private Dictionary <Extension, Extension[]> GetEnablerAndRequiredExtensions(int definition) { return(_extensionReader.GetEnablerExtensions(definition).ToDictionary(e => e, e => _extensionReader.GetRequiredExtensions(e.id).ToArray())); }