public static IEnumerable <TPlugin> ThatAppliesTo <TPlugin, TPluginContext, TInstanceContext>( this ConditionalPlugins <TPlugin, TPluginContext> plugins, IEnumerable <TPlugin> instances, TPluginContext pluginContext, TInstanceContext instanceContext) where TPlugin : IConditional <TInstanceContext> { return(plugins.ThatApply(instances, pluginContext, x => x.AppliesTo(instanceContext))); }
private static IEnumerable <TPlugin> ThatApplyOrDefault <TPlugin, TPluginContext>( this ConditionalPlugins <TPlugin, TPluginContext> plugins, IEnumerable <TPlugin> instances, TPluginContext pluginContext, Func <TPlugin, bool> predicate) { return(plugins.ThatApply(instances, pluginContext, predicate).ToList() .AnyOrDefault(() => plugins.GetDefaultInstance(instances))); }