Exemplo n.º 1
0
            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);
                }
            }
        }