/// <summary> /// Returns an array with the modules found by using reflection. /// </summary> /// <returns>An array of <see cref="IModuleInfo"/>. An empty array is returned if no module is located.</returns> public IModuleInfo[] EnumerateModules() { List<ModuleInfo> modules = new List<ModuleInfo>(); List<string> directories = new List<string>(); directories.Add(BasePath); while (directories.Count > 0) { string directory = directories[0]; directories.Remove(directory); foreach (string filename in Directory.GetFiles(directory, "*.dll")) { Assembly assm = Assembly.LoadFile(filename); if (AssemblyHasModuleAttribute(assm)) { ModuleInfo mi = new ModuleInfo(); mi.SetAssemblyFile(filename); modules.Add(mi); } } directories.AddRange(Directory.GetDirectories(directory)); } return modules.ToArray(); }
public IModuleInfo[] Parse(string xml) { SolutionProfileElement solution = XmlValidationHelper.DeserializeXml<SolutionProfileV1.SolutionProfileElement>(xml, "SolutionProfileV1.xsd", Namespace); List<ModuleInfo> mis = new List<ModuleInfo>(); if (solution.Modules != null) { foreach (ModuleInfoElement moduleInfo in solution.Modules) { ModuleInfo mi = new ModuleInfo(moduleInfo.AssemblyFile); SetModuleRoles(moduleInfo, mi); mis.Add(mi); } } return mis.ToArray(); }
private static void SetModuleRoles(ModuleInfoElement moduleInfo, ModuleInfo mi) { if (moduleInfo.Roles != null && moduleInfo.Roles.Length > 0) foreach (RoleElement role in moduleInfo.Roles) mi.AddRoles(role.Allow); }
private static IModuleInfo[] CreateModuleInfos(SolutionProfileElement solutionProfile) { ModuleInfo[] mInfos = new ModuleInfo[solutionProfile.Modules.Length]; for (int i = 0; i < solutionProfile.Modules.Length; i++) { ModuleInfoElement xsdModule = solutionProfile.Modules[i]; ModuleInfo mInfo = new ModuleInfo(xsdModule.AssemblyFile); mInfo.SetUpdateLocation(xsdModule.UpdateLocation); if (xsdModule.Roles != null && xsdModule.Roles.Length > 0) { foreach (RoleElement role in xsdModule.Roles) { mInfo.AddRoles(role.Allow); } } mInfos[i] = mInfo; } return mInfos; }