private void CreateClassesMetadata(List <EntityType> EntityTypes, string ModelsNamespace, string ModelsDirectory) { //Generate Classes Metadata ClassesMetadata classesMetadata = new ClassesMetadata(); classesMetadata.Namespace = ModelsNamespace; classesMetadata.Tables = EntityTypes.ToList(); var metadataFilePath = Path.Combine(ModelsDirectory, "ModelsMetadata.cs"); File.AppendAllText(metadataFilePath, classesMetadata.TransformText()); }
/// <summary> /// This function is the callback used to execute the command when the menu item is clicked. /// See the constructor to see how the menu item is associated with this function using /// OleMenuCommandService service and MenuCommand class. /// </summary> /// <param name="sender">Event sender.</param> /// <param name="e">Event args.</param> private void MenuItemCallback(object sender, EventArgs e) { try { var controllersClasses = ClassesMetadata.GetClasses().ToList(); List <ControllerType> controllers = new List <ControllerType>(); foreach (var cnrtclass in controllersClasses) { try { var newCnt = new ControllerType(); newCnt.Name = cnrtclass.Name; newCnt.Functions = new List <ControllerAction>(); #region Functions var funcClass = cnrtclass.Children.OfType <CodeFunction2>().Where(func => func.Access == vsCMAccess.vsCMAccessPublic && func.FunctionKind == vsCMFunction.vsCMFunctionFunction).ToList(); foreach (var fun in funcClass) { try { var newCntaction = new ControllerAction(); newCntaction.Name = fun.Name; newCntaction.ControllerName = newCnt.Name; newCntaction.Name = fun.Name; newCntaction.returnType = (fun.Type?.CodeType as CodeClass2)?.Name ?? "void"; newCntaction.ActionVerb = GetVerb(fun); newCntaction.Parameters = new List <ControllerActionParameter>(); var funParams = fun.Parameters.OfType <CodeParameter2>()?.ToList(); foreach (var prm in funParams) { try { ControllerActionParameter p = new ControllerActionParameter() { Name = prm.Name, TypeName = prm?.Type?.CodeType?.Name }; newCntaction.Parameters.Add(p); } catch (Exception e1) { }; } newCnt.Functions.Add(newCntaction); } catch (Exception e2) { } } #endregion controllers.Add(newCnt); } catch (Exception e3) { } } IVsUIShell uiShell = (IVsUIShell)ServiceProvider.GetService(typeof(SVsUIShell)); uiShell.EnableModeless(0); var xamlDialog = new ActionSelectorDialogWindow(controllers, InsertText) { Owner = Application.Current.MainWindow }; xamlDialog.HasMinimizeButton = false; xamlDialog.HasMaximizeButton = true; xamlDialog.MaxHeight = 440; xamlDialog.MinHeight = 340; xamlDialog.MaxWidth = 800; xamlDialog.MinWidth = 300; xamlDialog.Title = "Generate From Action"; xamlDialog.ActionToClose = xamlDialog.Close; xamlDialog.ShowDialog(); uiShell.EnableModeless(1); } catch (Exception ex) { } }