static void SeekDependencies(Type ctlType, ref List<Type> dependencies)
{
var deps = dependencies;
// Retrieve all member types which are not in dependency list yet
var members = ctlType.GetMembers(BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Public | BindingFlags.Static)
.SelectMany(info => GetMemberTypes(info))
.Where(m => m != null && m.Namespace != null && m.Namespace.StartsWith("AjaxControlToolkit"))
.Distinct()
.Where(m => !deps.Contains(m))
.ToList();
// For extender control, we should check also the dependencies of target control type
foreach (var targetCtlType in ctlType.GetCustomAttributes(true)
.Where(a => a is TargetControlTypeAttribute)) {
var targetType = ((TargetControlTypeAttribute)targetCtlType).TargetControlType;
if (!members.Contains(targetType) && !dependencies.Contains(targetType))
members.Add(targetType);
}
// Store dependency list
dependencies.AddRange(members.ToList());
// Iterate every dependency to find nested dependencies
foreach (var member in members) {
SeekDependencies(member, ref dependencies);
}
}