Beispiel #1
0
        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)));
        }
Beispiel #2
0
 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;
 }
Beispiel #3
0
        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)));
        }
Beispiel #4
0
        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());
        }
Beispiel #5
0
        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);
            }
        }