private static void AddModules(List <Type> moduleTypes, Type moduleType) { CoreModuleBase.CheckCoreModuleType(moduleType); if (moduleTypes.Contains(moduleType)) { return; } moduleTypes.Add(moduleType); foreach (var dependedModuleType in FindDependedModuleTypes(moduleType)) { AddModules(moduleTypes, dependedModuleType); } }
public static List <Type> FindDependedModuleTypes(Type moduleType) { CoreModuleBase.CheckCoreModuleType(moduleType); var source = new List <Type>(); foreach (var dependedTypes in moduleType.GetCustomAttributes().OfType <DependsOnAttribute>()) { foreach (var dependedType in dependedTypes.GetDependedTypes()) { if (!source.Contains(dependedType)) { source.Add(dependedType); } } } return(source); }