private T InnerRead <T>(INIFile f, T defaultValue, string fieldName, string defaultSection, IResolver resolver)
        {
            string s = INIAttributeExt.GetSection(Section, defaultSection);
            string k = INIAttributeExt.GetKey(Key, fieldName);

            if (Required && !f.HasKey(s, k))
            {
                throw new INIKeyNotFoundException(s, k);
            }

            return(Parser.Parse(f.GetString(s, k, null), resolver, defaultValue));
        }
Beispiel #2
0
        private T[] InnerRead <T>(INIFile f, string fieldName, string defaultSection, IResolver resolver)
        {
            string s = INIAttributeExt.GetSection(Section, defaultSection);
            string k = INIAttributeExt.GetKey(Key, fieldName);

            string[] list = f.GetValue(s, k, resolver, new string[0]);
            T[]      ret  = new T[list.Length];
            for (int i = 0; i < list.Length; i++)
            {
                T instance = Activator.CreateInstance <T>();
                f.LoadByAttribute(ref instance, list[i], resolver);
                ret[i] = instance;
            }

            return(ret);
        }
        private void InnerWrite <T>(INIFile f, T value, string fieldName, string defaultSection)
        {
            if (typeof(T).IsClass && value == null)
            {
                return;
            }

            string s = INIAttributeExt.GetSection(Section, defaultSection);
            string k = INIAttributeExt.GetKey(Key, fieldName);
            string v = Parser.Write(value);

            if (!v.Equals(NoWriteValue))
            {
                f.SetString(s, k, v);
            }
        }
Beispiel #4
0
        private void InnerWrite <T>(INIFile f, T[] value, string fieldName, string defaultSection)
        {
            if (value == default)
            {
                return;
            }

            string s = INIAttributeExt.GetSection(Section, defaultSection);
            string k = SubsectionPrefix ?? INIAttributeExt.GetKey(Key, fieldName);

            string[] keys = new string[value.Length];
            for (int i = 0; i < value.Length; i++)
            {
                T o = value[i];
                keys[i] = fieldName + i.ToString();
                f.UpdateByAttribute(ref o, keys[i]);
            }
            f.SetValue(s, k, Parser.Write(keys));
        }