SenseNet.ContentRepository.TemplateManager.DiscoverTemplateReplacers C# (CSharp) Method

DiscoverTemplateReplacers() private static method

private static DiscoverTemplateReplacers ( ) : Dictionary>
return Dictionary>
        private static Dictionary<string, Dictionary<string, TemplateReplacerBase>> DiscoverTemplateReplacers()
        {
            var trType = typeof(TemplateReplacerBase);
            var replacerTypes = TypeHandler.GetTypesByBaseType(trType);
            var replacers = new Dictionary<string, Dictionary<string, TemplateReplacerBase>>();

            _templatePatternFormats = new Dictionary<string, string>();

            foreach (var replacerType in replacerTypes)
            {
                var itr = replacerType;

                //Find the base type for this replacer type 'subtree' that
                //is the direct children of the abstract replacer base type
                while (itr.BaseType != null && itr.BaseType.FullName != trType.FullName)
                {
                    itr = itr.BaseType;
                }

                //store the different replace patterns for the replacer base types
                if (!replacers.ContainsKey(itr.FullName))
                {
                    var replacerBaseInstance = Activator.CreateInstance(itr) as TemplateReplacerBase;
                    if (replacerBaseInstance != null)
                        _templatePatternFormats.Add(itr.FullName, replacerBaseInstance.TemplatePatternFormat);

                    replacers.Add(itr.FullName, CollectTemplateReplacers(itr));
                }
            }

            return replacers;
        }