コード例 #1
0
        private void Execute(object selectedItem)
        {
            #region 提示

            string selectedType = "项目";
            if (selectedItem is ProjectItem)
            {
                selectedType = "文件";
            }
            var res = MessageBox.Show(
                string.Format("执行前请先保存所有的代码文件。将为当前选中的{0}中所有实体/仓库生成最新的泛型接口代码。确定执行吗?", selectedType),
                "提示", MessageBoxButton.OKCancel
                );
            if (res != MessageBoxResult.OK)
            {
                return;
            }

            #endregion

            //查找文件。
            var selectedProjectItem = selectedItem as ProjectItem;
            var project             = selectedProjectItem != null ? selectedProjectItem.ContainingProject : (selectedItem as Project);
            var entities            = new EntityFileFinder().FindPairs(project, e => !e.IsAbstract &&
                                                                       (selectedProjectItem == null || selectedProjectItem.Name == e.Name + ".cs")
                                                                       ).ToList();
            var repositories = new RepoFileFinder().FindPairs(project, e => !e.IsAbstract &&
                                                              (selectedProjectItem == null || selectedProjectItem.Name == e.Name + ".cs")
                                                              ).ToList();
            if (entities.Count == 0 && repositories.Count == 0)
            {
                MessageBox.Show("无法生成:选中的项中没有找到任何有自动生成代码的文件。");
                return;
            }

            //替换文件。
            foreach (var entity in entities)
            {
                RefreshAutoCodeForClass(entity.CodeClass, entity.GeneratedCode, this.RenderEntityByTemplate);
            }
            var allEntities = entities.Select(e => e.CodeClass).ToList();
            foreach (var repo in repositories)
            {
                RefreshAutoCodeForClass(repo.CodeClass, repo.GeneratedCode, r => this.RenderRepoByTemplate(r, allEntities));
            }

            MessageBox.Show(string.Format("生成完毕。一共生成 {0} 个实体文件,{1} 个仓库文件。", entities.Count, repositories.Count));
        }
コード例 #2
0
ファイル: RefreshAutoCodeCommand.cs プロジェクト: yungtau/oea
        private void Execute(object selectedItem)
        {
            #region 提示

            string selectedType = "项目";
            if (selectedItem is ProjectItem)
            {
                selectedType = "文件";
            }
            var res = MessageBox.Show(
                string.Format("执行前请先保存所有的代码文件。将为当前选中的{0}中所有实体生成最新的泛型接口代码。确定执行吗?", selectedType),
                "提示", MessageBoxButton.OKCancel
                );
            if (res != MessageBoxResult.OK)
            {
                return;
            }

            #endregion

            //查找文件。
            var entities     = EntityFileFinder.FindFiles(selectedItem).Where(e => !e.IsAbstract).ToList();
            var repositories = RepoFileFinder.FindFiles(selectedItem).Where(e => !e.IsAbstract).ToList();
            if (entities.Count == 0 && repositories.Count == 0)
            {
                MessageBox.Show("无法生成:选中的项中没有找到任何有自动生成代码的文件。");
                return;
            }

            //替换文件。
            foreach (var entity in entities)
            {
                var item = entity.ProjectItem;
                RefreshAutoCodeForClass(entity, item, this.RenderEntityByTemplate);
            }
            foreach (var repo in repositories)
            {
                var item = repo.ProjectItem;
                RefreshAutoCodeForClass(repo, item, this.RenderRepoByTemplate);
            }

            MessageBox.Show(string.Format("生成完毕。一共生成 {0} 个实体文件,{1} 个仓库文件。", entities.Count, repositories.Count));
        }