Пример #1
0
        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);
        }
Пример #2
0
        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);
        }