Exemple #1
0
 public void Save(bool silent = false)
 {
     try
     {
         if (silent && mWatcher != null)
         {
             mWatcher.Changed            -= mFileChangedHandler;
             mWatcher.Created            -= mFileChangedHandler;
             mWatcher.EnableRaisingEvents = false;
         }
         ShouldNotify = false;
         IniWriter writer = new IniWriter();
         writer.FileName = FileName;
         writer.Serialize(Data);
         writer.Save();
         writer.Close();
     }
     catch (Exception ee)
     {
     }
     finally
     {
         ShouldNotify = true;
         if (silent && mWatcher != null)
         {
             mWatcher.Changed            += mFileChangedHandler;
             mWatcher.Created            += mFileChangedHandler;
             mWatcher.EnableRaisingEvents = false;
         }
     }
 }
Exemple #2
0
        public static String SerializeToString(Object o)
        {
            IniWriter writer = new IniWriter();

            writer.Serialize(o);
            return(writer.ToString());
        }
Exemple #3
0
        public static IniWriter Open(String file, bool appendFile = false)
        {
            IniWriter writer = new IniWriter();

            if (File.Exists(file) && appendFile)
            {
                writer.Lines.AddRange(File.ReadAllLines(file));
            }
            writer.FileName = file;
            return(writer);
        }
Exemple #4
0
        public static void Test()
        {
            //可以從物件Serialize到Ini
            ExampleClass example = new ExampleClass();

            example.StringField                 = "Hello World";
            example.IntField                    = 1234567890;
            example.DoubleField                 = 3.1415926;
            example.SizeField                   = new Size(100, 100);
            example.RectangleField              = new Rectangle(1, 2, 3, 4);
            example.PointField                  = new Point(5, 6);
            example.InnerClassField             = new ExampleClass.InnerClass();
            example.InnerClassField.StringField = "InnerClass String";
            example.InnerClassField.IntField    = 1000;
            example.InnerClassField.IntField2   = 2000;
            example.InnerClassField.DoubleField = 3000;
            IniWriter writer = new IniWriter();

            writer.Serialize(example);
            String str = writer.ToString();
        }
        void ret_OKClicked(object sender, EventArgs e)
        {
            Dictionary <String, Object> givenValue = new Dictionary <string, object>();
            IniWriter writer = IniWriter.Open(this.TargetFileName);

            foreach (Control c in DataFieldControl)
            {
                String fullName = (String)c.Tag;
                IniReader.OnSerializeNotificationEventArgs arg = FieldDeserializeMap[fullName];
                Object value = null;

                bool textBased = false;
                if (c is TextBox)
                {
                    value     = ((TextBox)c).Text;
                    textBased = true;
                }
                else if (c is ComboBox)
                {
                    value     = ((ComboBox)c).Text;
                    textBased = true;
                }
                if (textBased)
                {
                    if (arg.Field.FieldType == typeof(int))
                    {
                        int ival = default(int);
                        int.TryParse((String)value, out ival);
                        value = ival;
                    }
                    else if (arg.Field.FieldType == typeof(double))
                    {
                        double ival = default(double);
                        double.TryParse((String)value, out ival);
                        value = ival;
                    }
                    else if (arg.Field.FieldType == typeof(bool))
                    {
                        bool ival = default(bool);
                        bool.TryParse((String)value, out ival);
                        value = ival;
                    }
                    else if (arg.Field.FieldType == typeof(Size))
                    {
                        var  list = IniReader.IntListFromString((String)value);
                        Size sz   = new Size();
                        if (list.Count == 2)
                        {
                            sz.Width  = list[0];
                            sz.Height = list[1];
                        }
                        value = sz;
                    }
                    else if (arg.Field.FieldType.IsEnum)
                    {
                        try
                        {
                            String sval    = (String)value.ToString();
                            object enumVal = Enum.Parse(arg.Field.FieldType, sval);
                            value = sval;
                        }
                        catch (Exception)
                        {
                        }
                    }
                    else if (arg.Field.FieldType == typeof(Point))
                    {
                        var   list = IniReader.IntListFromString((String)value);
                        Point sz   = new Point();
                        if (list.Count == 2)
                        {
                            sz.X = list[0];
                            sz.Y = list[1];
                        }
                        value = sz;
                    }
                    else if (arg.Field.FieldType == typeof(Rectangle))
                    {
                        var       list = IniReader.IntListFromString((String)value);
                        Rectangle sz   = new Rectangle();
                        if (list.Count == 4)
                        {
                            sz.X      = list[0];
                            sz.Y      = list[1];
                            sz.Width  = list[2];
                            sz.Height = list[3];
                        }
                        value = sz;
                    }
                    else if (arg.Field.FieldType == typeof(int[]))
                    {
                        var list = IniReader.IntListFromString((String)value);
                        value = list;
                    }
                }
                else
                {
                    value = c.BackColor;
                }
                givenValue[fullName] = value;
            }

            writer.GivenValue = givenValue;
            writer.Serialize(this.Value);
            writer.Close();
        }