protected MethodDeclarationSyntax MutatorFrom(RecordEntry entry) { var arguments = RecordProperties.Select(x => { return(SyntaxFactory.Argument( SyntaxFactory.IdentifierName(x.Identifier))); }); var mutator = SyntaxFactory.MethodDeclaration(RecordTypeSyntax, MutatorIdentifierFor(entry)) .WithModifiers( SyntaxFactory.TokenList( SyntaxFactory.Token(SyntaxKind.PublicKeyword))) .WithParameterList( SyntaxFactory.ParameterList( SyntaxFactory.SingletonSeparatedList( SyntaxFactory.Parameter( entry.Identifier) .WithType(entry.Type)))) .WithBody( SyntaxFactory.Block( SyntaxFactory.ReturnStatement( SyntaxFactory.ObjectCreationExpression(RecordTypeSyntax) .WithArgumentList( SyntaxFactory.ArgumentList( SyntaxFactory.SeparatedList(arguments)))))); return(mutator); }
protected SyntaxList <MemberDeclarationSyntax> GenerateMembers(SyntaxToken identifier, IReadOnlyList <RecordEntry> properties) { var ctor = SyntaxFactory.ConstructorDeclaration(identifier.ValueText) .WithModifiers(SyntaxFactory.TokenList(SyntaxFactory.Token(RecordAttribute.GetPrimaryCtorAccessSyntaxKind()))) .WithParameterList(properties.IntoCtorParameterList()) .WithBody(properties.IntoCtorBody()); var members = SyntaxFactory.SingletonList <MemberDeclarationSyntax>(ctor); if (RecordAttribute.GetGenerateMutators()) { members = members.AddRange(RecordProperties.Select(p => MutatorFrom(p))); } return(members); }
private void CheckPropertySaveStatus(RecordProperties<TreeNode> parent, TableDef<TreeNode> node) { if (propertyDirtyStatus > 0) { switch ( MessageBox.Show("Değişiklikleri kaydetmek istiyor musunuz?", "Lütfen Cevaplayınız", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button3)) { case DialogResult.Yes: SaveSelectedProperty(); break; case DialogResult.Cancel: treeProperties.SelectedNode = null; return; } } selectedProperty = parent; selectedTable = node; ResetSelectionProperty(); }
private bool FillRecordProperties() { try { var fInfo = new FileInfo(Path.Combine("info", "recorderProperties.json")); if (!fInfo.Exists) throw new Exception(string.Format("Recorder sistem-tablo bilgilerinin bulunduğu {0} bulunamadı", fInfo.FullName)); var json = new DataContractJsonSerializer( typeof(Dictionary<string, RecordProperties<TreeNode>>)); using (var fs = new StreamReader(fInfo.FullName, Encoding.GetEncoding(1254))) { var o = json.ReadObject(fs.BaseStream); if (o == null) throw new Exception(string.Format("{0} dosyasında sistem-tablo bilgileri bulunamadı", fInfo.FullName)); if (!(o is Dictionary<string, RecordProperties<TreeNode>>)) throw new Exception( string.Format("{0} dosyasındaki {1} türü beklenen sistem-tablo bilgi sözlük türünde değil", fInfo.FullName, o.GetType().Name)); propertyLookup = (Dictionary<string, RecordProperties<TreeNode>>)o; var ls = new List<RecordProperties<TreeNode>>(); foreach (var key in propertyLookup.Keys) { if (systemLookup.SystemLookup.ContainsKey(key)) { var prop = propertyLookup[key]; ls.Add(prop); if (prop.Table == null) prop.Table = new Dictionary<string, TableDef<TreeNode>>(); } } foreach (var key in systemLookup.SystemLookup.Keys) { if (!propertyLookup.ContainsKey(key)) { var prop = new RecordProperties<TreeNode> { SystemName = key, Table = new Dictionary<string, TableDef<TreeNode>>() }; ls.Add(prop); propertyLookup[key] = prop; } } ls.Sort(CompareByNameSys); foreach (var r in ls) { var node = new TreeNode(r.SystemName); r.Data = node; node.Tag = r; if (r.Table == null) r.Table = new Dictionary<string, TableDef<TreeNode>>(); else { var tables = new TableDef<TreeNode>[r.Table.Values.Count]; r.Table.Values.CopyTo(tables, 0); Array.Sort(tables, CompareByNameTable); foreach (var t in r.Table.Values) { var nodeSub = new TreeNode { Text = t.Description, Tag = t }; t.Data = nodeSub; node.Nodes.Add(nodeSub); } } treeProperties.Nodes.Add(node); } return true; } } catch (Exception e) { MessageBox.Show(string.Format("Recorder bilgileri yüklenirken hata oluştu: {0}", e.Message), "Hata", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1); return false; } }
protected virtual int CompareByNameSys(RecordProperties<TreeNode> l, RecordProperties<TreeNode> r) { return CompareByText(l.SystemName, r.SystemName); }