public WriterTypeBuilder(GroBufWriter groBufWriter, ModuleBuilder module, IWriterCollection writerCollection, IDataMembersExtractor dataMembersExtractor) { this.groBufWriter = groBufWriter; this.module = module; this.writerCollection = writerCollection; this.dataMembersExtractor = dataMembersExtractor; }
public void Remove(Package package, ModuleCollection modules, IWriterCollection writers) { if (LoadedPackages.Contains(package)) { Unload(package, modules, writers); } PackagesCollection.Packages.Remove(package); }
public static List <IModule> GetAssemblyModules(string assemblyStringOrPath, IWriterCollection writers = null) { List <Type> types = new List <Type>(); var asm = LoadAssembly(assemblyStringOrPath, writers); foreach (var type in asm.GetTypes()) { if (type.GetInterface(typeof(IModule).FullName) != null) { types.Add(type); } } return(types.Select(t => (IModule)Activator.CreateInstance(t)).ToList()); }
public static Assembly LoadAssembly(string assembly, IWriterCollection writers = null) { if (File.Exists(assembly)) { string fileName = new FileInfo(assembly).FullName; if (writers != null) { writers.Debug.WriteLine(string.Format("Loading assembly from file {0}", fileName)); } return(Assembly.LoadFile(fileName)); } else { if (writers != null) { writers.Debug.WriteLine(string.Format("Loading assembly from assembly string '{0}'", assembly)); } return(Assembly.Load(assembly)); } }
public void Unload(Package package, ModuleCollection modules, IWriterCollection writers) { if (!LoadedPackages.Contains(package)) { throw new Exception(string.Format("The package {0} is not loaded", package.Name)); } Dictionary <string, System.Reflection.Assembly> asmDic = new Dictionary <string, System.Reflection.Assembly>(); foreach (var module in package.Modules) { Type moduleType = null; System.Reflection.Assembly asm = null; try { if (!asmDic.ContainsKey(module.Assembly)) { asmDic.Add(module.Assembly, Util.LoadAssembly(module.Assembly)); } asm = asmDic[module.Assembly]; moduleType = asm.GetType(module.ModuleType); modules.Uninstall(moduleType, writers); writers.Verbose.WriteLine(string.Format("Uninstalled module '{0}' from assembly '{1}'", moduleType, asm)); } catch (Exception ex) { writers.Error.WriteLine(string.Format("An error occured while uninstalling module '{0}' from assembly '{1}' :: {2}\r\n{3}" , moduleType, asm.CodeBase.Replace("file:///", string.Empty), ex.Message, ex.StackTrace)); writers.Error.WriteLine("The application should be restarted to ensure that the package is fully unloaded."); } } _loadedPackageNames.Remove(package.Name); }
public ModuleUninstaller(CommandCollection commands, List <IModule> modules, IWriterCollection writers) { _commands = commands; _modules = modules; _writers = writers; }
public WriterTypeBuilderContext(GroBufWriter groBufWriter, ModuleBuilder module, Type constantsType, Dictionary <Type, FieldInfo[]> fields, IWriterCollection writerCollection, IDataMembersExtractor dataMembersExtractor) { GroBufWriter = groBufWriter; Module = module; ConstantsType = constantsType; this.fields = fields; this.writerCollection = writerCollection; this.dataMembersExtractor = dataMembersExtractor; }
internal BufferedRtfWriter(RichTextBox rtb) { _rtb = rtb; CreateBuffer(); Out = new HostWriterCollection(OnHostWriterActionHandler, this); }
public bool Uninstall(Type moduleType, IWriterCollection writers) { return(new ModuleUninstaller(_commands, _modules, writers).Uninstall(moduleType)); }
public bool Uninstall(string moduleName, IWriterCollection writers) { return(new ModuleUninstaller(_commands, _modules, writers) .Uninstall(this.FirstOrDefault(m => m.Name.Equals(moduleName, StringComparison.OrdinalIgnoreCase)).GetType())); }
public WriterConstantsBuilderContext(GroBufWriter groBufWriter, TypeBuilder constantsBuilder, IWriterCollection writerCollection, IDataMembersExtractor dataMembersExtractor) { GroBufWriter = groBufWriter; ConstantsBuilder = constantsBuilder; this.writerCollection = writerCollection; this.dataMembersExtractor = dataMembersExtractor; }
public void Load(Package package, ModuleCollection modules, IWriterCollection writers) { if (PackageLogic.Instance.LoadedPackages.Contains(package)) { throw new Exception(string.Format("The package {0} is already loaded", package.Name)); } Dictionary <string, System.Reflection.Assembly> asmDic = new Dictionary <string, System.Reflection.Assembly>(); bool isErrors = false; if (package.Modules.Count > 0) { foreach (var module in package.Modules) { Type moduleType = null; System.Reflection.Assembly asm = null; try { if (!asmDic.ContainsKey(module.Assembly)) { asmDic.Add(module.Assembly, Util.LoadAssembly(module.Assembly)); } asm = asmDic[module.Assembly]; moduleType = asm.GetType(module.ModuleType); if (!modules.Install(moduleType, writers) && isErrors == false) { isErrors = true; } } catch (Exception ex) { writers.Error.WriteLine(string.Format("An error occured while installing module '{0}' from assembly '{1}' :: {2}\r\n{3}" , moduleType, asm.CodeBase.Replace("file:///", string.Empty), ex.Message, ex.StackTrace)); if (moduleType != null && modules.Any(m => m.GetType() == moduleType)) { modules.Uninstall(moduleType, writers); } writers.Error.WriteLine("The module has been uninstalled."); isErrors = true; } } } else { writers.Warning.WriteLine("The package has been loaded but no modules were installed - the package does not define any modules."); } _loadedPackageNames.Add(package.Name); if (isErrors) { writers.Warning.WriteLine("The package has been loaded with errors."); } else { writers.Standard.WriteLine("Package loaded"); } }
internal ObjectWriter(IWriterCollection writers, IBufferedWriter buffer) { _writers = writers; _buffer = buffer; }