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;
}