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