/// <summary> /// Method responsible for configuring module catalog /// </summary> /// <param name="catalog">module catalog</param> public virtual void ConfigureModuleCatalog(IModuleCatalog catalog) { var modulesPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Modules"); var modules = new DirectoryInfo(modulesPath).GetDirectories(); var dlls = new DirectoryInfo(modulesPath).GetFiles("*.dll").ToList(); foreach (var directoryInfo in modules) { var sub = directoryInfo.GetFiles("*.dll"); dlls.AddRange(sub); } LoadModule(catalog, dlls); }
private void LoadModule(IModuleCatalog catalog, IEnumerable <FileInfo> dlls) { foreach (var fileInfo in dlls) { try { var assembly2 = Assembly.LoadFrom(fileInfo.FullName); var types = assembly2.GetTypes(); foreach (var type in types) { if (type.GetInterfaces().Contains(typeof(IModule))) { logger.InfoFormat("Going To load module {0}", fileInfo.FullName); LoadModule(catalog, type, fileInfo); } } } catch (Exception ex) { logger.ErrorFormat("Could not load {0}", ex, fileInfo.FullName); } } }
protected void LoadModule(IModuleCatalog catalog, Type type, FileInfo moduleFile) { catalog.AddModule(type.Name, type.AssemblyQualifiedName, new Uri(moduleFile.FullName, UriKind.RelativeOrAbsolute)); }