using MgTestAdmin.Model; using System; using System.Collections.Generic; using System.Linq; namespace MgTestAdmin { public class OperationProviderService { private IOperationProvider[] _providers; public OperationProviderService() { _providers = typeof(OperationProviderService) .Assembly .GetTypes() .Where(t => t.IsClass && !t.IsAbstract && typeof(IOperationProvider).IsAssignableFrom(t)) .Select(t => (IOperationProvider)Activator.CreateInstance(t, true)) .ToArray(); } public IEnumerable GetCategories() { return _providers.GroupBy(p => p.Category).Select(g => g.Key).OrderBy(c => c); } public IEnumerable GetProviders(string category) { return _providers.Where(p => p.Category == category).OrderBy(p => p.Name); } } }