Example #1
0
        public override TemplateCollection GetTemplates(CallContext context)
        {
#if DEBUG
            var timer = Stopwatch.StartNew();
#endif

            var headTemplates = HeadProvider.GetTemplates(context) ?? EmptyTemplates;

            var readOnlyTemplates = ReadOnlyProviders
                                    .SelectMany(x => x
                                                .GetTemplates(context) ?? EmptyTemplates);

            var templates = headTemplates
                            .Concat(readOnlyTemplates)
                            .GroupBy(x => x.ID).Select(x => x.First()) // .Distinct()
                            .ToArray();

            var result = new TemplateCollection();
            result.Reset(templates);

#if DEBUG
            this.Trace(result, timer, context);
#endif

            return(result);
        }