public CodeGeneratorInfo(string name, ICodeGeneratorProvider provider) { if (string.IsNullOrWhiteSpace(name)) { throw new ArgumentException("Name must not be null, empty or whitespace.", nameof(name)); } if (provider is null) { throw new ArgumentNullException(nameof(provider)); } this.name = name; optionBag = provider.CreateOptions(); OptTable = ReflectOptTable(optionBag?.GetType()); }
private string m_rootViewFilePath = null; //file path of current *.amvd file public void InitializeForm(List <string> generatorAssemblyList, VDView rootView, string rootViweFilePath) { m_rootView = rootView; m_rootViewFilePath = rootViweFilePath; this.lvGeneratorList.Items.Clear(); foreach (string assemPath in generatorAssemblyList) { try { Assembly assGenerator = Assembly.LoadFrom(assemPath); if (assGenerator == null) { continue; } foreach (Type t in assGenerator.GetTypes()) { if (t.GetInterface("ICodeGeneratorProvider") == null) { continue; } ICodeGeneratorProvider gp = Activator.CreateInstance(t) as ICodeGeneratorProvider; if (gp == null) { continue; } List <ICodeGeneratorController> generatorList = gp.GetGeneratorList(); foreach (ICodeGeneratorController ctrl in generatorList) { // add an item in the All Generators list view ListViewItem item = new ListViewItem(new string[] { "", ctrl.Name, Path.GetFileName(assemPath), Path.GetDirectoryName(assemPath), ctrl.Description }); item.Checked = true; saveGeneratorControllerToItemTag(item, ctrl); this.lvGeneratorList.Items.Add(item); } } } catch (Exception ex) { Logger logger = new Logger(m_provider); logger.LogError(ex); } } }