public LessonsCache(IHostingEnvironment hostingEnvironment) { var providers = new ILessonProvider[] { new EnLessonProvider(hostingEnvironment), new CsLessonProvider(hostingEnvironment), new RuLessonProvider(hostingEnvironment) }; var dict = providers.ToDictionary(p => p.Language, p => p.CreateLessons()); SetValue <LessonBase>(dict); }
public static IDictionary <BaseRunable, string> GetOptions() { IDictionary <BaseRunable, string> options = new Dictionary <BaseRunable, string>(); StringBuilder stringBuilder = new StringBuilder(); // Loop over all the runables. foreach (BaseRunable runable in _runnables) { Type runableType = runable.GetType(); //Check if the class implements a week provider interface. if (typeof(IWeekProvider).IsAssignableFrom(runableType)) { IWeekProvider weekProvider = (IWeekProvider)runable; stringBuilder.Append($"Week {weekProvider.Week}, "); } //Check if the class provides a lesson provider. if (typeof(ILessonProvider).IsAssignableFrom(runableType)) { ILessonProvider lessonProvider = (ILessonProvider)runable; stringBuilder.Append($"Lesson {lessonProvider.Lesson}, "); } // Check if the class implements a single or multiple assignment interface. if (typeof(ISingleAssignmentProvider).IsAssignableFrom(runableType)) { ISingleAssignmentProvider singleAssignment = (ISingleAssignmentProvider)runable; stringBuilder.Append($"Assignment; {singleAssignment.AssignmentId}."); } else if (typeof(IMultipleAssignmentsProvider).IsAssignableFrom(runableType)) { IMultipleAssignmentsProvider multiAssignment = (IMultipleAssignmentsProvider)runable; stringBuilder.Append($"Assignments; {String.Join(" and ", multiAssignment.AssignmentIds)}."); } //Store the option. options.Add(runable, stringBuilder.ToString()); stringBuilder.Clear(); } return(options); }