public virtual String GetTypeString(String className = null) { var temp = Value; String result = null; while (temp is JArray) { if (result == null) { result = "List<{0}>"; } else { result = String.Format("List<{0}>", result); } temp = temp.First; } if (result != null) { result = String.Format(result, className ?? DartHelper.GetDartTypeString(DartHelper.ConverDartType(temp?.Type ?? JTokenType.Object))); } return(result ?? (className ?? DartHelper.GetDartTypeString(Type))); }
public ExtendedProperty(string uid, KeyValuePair <string, JToken> keyValuePair, int depth) { //this.depth = depth; this.Uid = uid + "_" + keyValuePair.Key; this.KeyValuePair = keyValuePair; UpdateNameByNamingConventionsType(); this.type = DartHelper.ConverDartType(keyValuePair.Value.Type); PropertyAccessorType = ConfigHelper.Instance.Config.PropertyAccessorType; }
public virtual String GetBaseTypeString(String className = null) { if (className != null) { return(className); } var temp = Value; while (temp is JArray) { temp = temp.First; } return(DartHelper.GetDartTypeString(DartHelper.ConverDartType(temp?.Type ?? JTokenType.Object))); }
public override string ToString() { OrderPropeties(); StringBuilder sb = new StringBuilder(); sb.AppendLine(String.Format(DartHelper.ClassHeader, this.ClassName)); if (Properties.Count > 0) { StringBuilder factorySb = new StringBuilder(); StringBuilder factorySb1 = new StringBuilder(); StringBuilder propertySb = new StringBuilder(); StringBuilder propertySb1 = new StringBuilder(); StringBuilder fromJsonSb = new StringBuilder(); //Array StringBuilder fromJsonSb1 = new StringBuilder(); StringBuilder toJsonSb = new StringBuilder(); factorySb.AppendLine(String.Format(DartHelper.FactoryStringHeader, this.ClassName)); //fromJsonSb.AppendLine(String.Format(DartHelper.FromJsonHeader, this.ClassName)); toJsonSb.AppendLine(DartHelper.ToJsonHeader); foreach (var item in Properties) { var lowName = item.Name.Substring(0, 1).ToLower() + item.Name.Substring(1); var name = item.Name; String className = null; String typeString; var setName = DartHelper.GetSetPropertyString(item); var setString = ""; var fss = DartHelper.FactorySetString(item.PropertyAccessorType); bool isGetSet = fss.StartsWith("{"); if (item is ExtendedJObject) { className = (item as ExtendedJObject).ClassName; setString = String.Format(DartHelper.SetObjectProperty, lowName, item.Key, className); typeString = className; } else if (item.JType == JTokenType.Array) { if (ObjectKeys.ContainsKey(item.Key)) { className = ObjectKeys[item.Key].ClassName; } typeString = item.GetTypeString(className: className); fromJsonSb1.AppendLine(item.GetArraySetPropertyString(lowName, typeString, className: className)); setString = $" {(isGetSet ? lowName : item.Name)}:{lowName},"; } else { setString = DartHelper.SetProperty(lowName, item, ClassName); typeString = DartHelper.GetDartTypeString(item.Type); } if (isGetSet) { factorySb.AppendLine(String.Format(fss, typeString, lowName)); if (factorySb1.Length == 0) { factorySb1.Append("}):"); } else { factorySb1.Append(","); } factorySb1.Append($"{setName}={lowName}"); } else { factorySb.AppendLine(String.Format(fss, item.Name)); } propertySb.AppendLine(String.Format(DartHelper.PropertyS(item.PropertyAccessorType), typeString, name, lowName)); fromJsonSb.AppendLine(setString); toJsonSb.AppendLine(String.Format(DartHelper.ToJsonSetString, item.Key, setName)); } if (factorySb1.Length == 0) { factorySb.AppendLine(DartHelper.FactoryStringFooter); } else { factorySb1.Append(";"); factorySb.Append(factorySb1.ToString()); } var fromJson = ""; if (fromJsonSb1.Length != 0) { fromJson = String.Format(DartHelper.FromJsonHeader1, this.ClassName) + fromJsonSb1.ToString() + String.Format(DartHelper.FromJsonFooter1, this.ClassName, fromJsonSb.ToString()); } else { fromJson = String.Format(DartHelper.FromJsonHeader, this.ClassName) + fromJsonSb.ToString() + DartHelper.FromJsonFooter; } //fromJsonSb.AppendLine(DartHelper.FromJsonFooter); toJsonSb.AppendLine(DartHelper.ToJsonFooter); sb.AppendLine(propertySb.ToString()); sb.AppendLine(factorySb.ToString()); sb.AppendLine(fromJson); sb.AppendLine(toJsonSb.ToString()); sb.AppendLine(DartHelper.ClassToString); } sb.AppendLine(DartHelper.ClassFooter); foreach (var item in ObjectKeys) { sb.AppendLine(item.Value.ToString()); } return(sb.ToString()); }
private async void GenerateButton_Click(object sender, RoutedEventArgs e) { try { if (extendedJObject != null) { var msg = extendedJObject.HasEmptyProperties(); if (msg != null) { MyMessageBox.Show(msg); return; } } if (extendedJObject != null) { StringBuilder sb = new StringBuilder(); if (!String.IsNullOrWhiteSpace(ConfigHelper.Instance.Config.FileHeaderInfo)) { var info = ConfigHelper.Instance.Config.FileHeaderInfo; //[Date MM-dd HH:mm] try { var start = info.IndexOf("[Date"); var startIndex = start; if (start >= 0) { start = start + "[Date".Length; var end = info.IndexOf("]", start); if (end >= start) { var format = info.Substring(start, end - start).Trim(); var replaceString = info.Substring(startIndex, end - startIndex + 1); if (format == null || format == "") { format = "yyyy MM-dd"; } info = info.Replace(replaceString, DateTime.Now.ToString(format)); } } } catch (Exception ex) { MyMessageBox.Show("[Date]时间格式有问题"); } sb.AppendLine(info); sb.AppendLine(""); } sb.AppendLine(DartHelper.JsonImport); if (ConfigHelper.Instance.Config.AddMethod) { if (ConfigHelper.Instance.Config.EnableArrayProtection) { sb.AppendLine(DartHelper.DebugPrintImport); sb.AppendLine(""); sb.AppendLine(DartHelper.TryCatchMethod); sb.AppendLine(""); } sb.AppendLine(ConfigHelper.Instance.Config.EnableDataProtection ? DartHelper.AsTMethodWithDataProtection : DartHelper.AsTMethod); sb.AppendLine(""); } sb.AppendLine(extendedJObject.ToString()); var result = sb.ToString(); #if WINDOWS_UWP || WPF result = await DartHelper.FormatCode(result); #endif tb.Text = result; #if WINDOWS_UWP var dp = new DataPackage(); dp.SetText(result); Clipboard.SetContent(dp); XDocument xd = XDocument.Load("Assets/Toast.xml"); XmlDocument doc = new XmlDocument(); doc.LoadXml(xd.ToString()); ToastNotification notification = new ToastNotification(doc); notification.ExpirationTime = DateTime.Now.AddSeconds(2); ToastNotificationManager.CreateToastNotifier().Show(notification); #else Clipboard.SetText(result); MyMessageBox.Show("Dart生成成功\n已复制到剪切板"); #endif } } catch (Exception ex) { HideProgressRing(); MyMessageBox.Show(ex.Message + "\n" + ex.StackTrace); } }