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

CollectTemplateReplacers() private static method

private static CollectTemplateReplacers ( Type replacerBaseType ) : TemplateReplacerBase>.Dictionary
replacerBaseType System.Type
return TemplateReplacerBase>.Dictionary
        private static Dictionary<string, TemplateReplacerBase> CollectTemplateReplacers(Type replacerBaseType)
        {
            var replacers = new Dictionary<string, TemplateReplacerBase>();
            var replacerTypes = new List<Type> { replacerBaseType };

            replacerTypes.AddRange(TypeHandler.GetTypesByBaseType(replacerBaseType));

            foreach (var replacerType in replacerTypes)
            {
                var replacerInstance = Activator.CreateInstance(replacerType) as TemplateReplacerBase;
                if (replacerInstance == null)
                    continue;

                foreach (var templateName in replacerInstance.TemplateNames)
                {
                    if (replacers.ContainsKey(templateName))
                    {
                        if (replacers[templateName].GetType().IsAssignableFrom(replacerType))
                            replacers[templateName] = replacerInstance;
                    }
                    else
                    {
                        replacers.Add(templateName, replacerInstance);
                    }
                }
            }

            return replacers;
        }