コード例 #1
0
ファイル: ACBrIniSection.cs プロジェクト: atkins126/ACBr
        public TType GetValue <TType>(string key, TType defaultValue = default)
        {
            if (string.IsNullOrEmpty(key) || string.IsNullOrWhiteSpace(key))
            {
                return(defaultValue);
            }

            TType ret;

            try
            {
                if (!ContainsKey(key))
                {
                    return(defaultValue);
                }

                ret = IniValueWrapper.UnWrap(this[key], defaultValue);
            }
            catch (Exception)
            {
                ret = defaultValue;
            }

            return(ret);
        }
コード例 #2
0
ファイル: IniUtil.cs プロジェクト: atkins126/ACBr
        public static void ReadFromINi(this ACBrIniSection section, Type tipo, object item)
        {
            if (!tipo.IsClass)
            {
                return;
            }

            foreach (var property in tipo.GetProperties(BindingFlags.Public | BindingFlags.Instance))
            {
                if (property.HasAttribute <IniIgnoreAttribute>())
                {
                    continue;
                }
                if (!(property.CanRead && property.CanWrite))
                {
                    continue;
                }
                if (!IniValueWrapper.CanWrapUnwrap(property.PropertyType))
                {
                    continue;
                }

                var keyName = property.HasAttribute <IniKeyAttribute>() ? property.GetAttribute <IniKeyAttribute>().Value : property.Name;

                if (!section.ContainsKey(keyName))
                {
                    continue;
                }

                var str = section[keyName];
                if (string.IsNullOrWhiteSpace(str))
                {
                    continue;
                }

                var value = IniValueWrapper.UnWrap(property.PropertyType, str, null);
                property.SetValue(item, value, null);
            }
        }
コード例 #3
0
ファイル: IniUtil.cs プロジェクト: atkins126/ACBr
        public static void WriteToIni(this ACBrIniSection section, Type tipo, object obj)
        {
            if (!tipo.IsClass)
            {
                return;
            }

            foreach (var property in tipo.GetProperties(BindingFlags.Public | BindingFlags.Instance | BindingFlags.NonPublic))
            {
                if (property.HasAttribute <IniIgnoreAttribute>())
                {
                    continue;
                }
                if (!(property.CanRead && property.CanWrite))
                {
                    continue;
                }
                if (!IniValueWrapper.CanWrapUnwrap(property.PropertyType))
                {
                    continue;
                }

                var value = property.GetValue(obj, null);
                if (value == null)
                {
                    continue;
                }

                var str     = IniValueWrapper.Wrap(property.PropertyType, value);
                var keyName = property.HasAttribute <IniKeyAttribute>() ? property.GetAttribute <IniKeyAttribute>().Value : property.Name;
                if (!string.IsNullOrEmpty(str))
                {
                    section.Add(keyName, str);
                }
            }
        }
コード例 #4
0
ファイル: ACBrIniSection.cs プロジェクト: atkins126/ACBr
 public void SetValue <TType>(string key, TType value)
 {
     Add(key, IniValueWrapper.Wrap <TType>(value));
 }