Пример #1
0
        public static void WriteIniFile(String file, object o)
        {
            if (!File.Exists(file))
            {
                throw new IOException("文件:" + file + "不存在!");
            }
            FileInfo fileInfo = new FileInfo(file);
            var      oProp    = o.GetType().GetProperties();
            var      map      = new Dictionary <string, object>();
            var      defGroup = o.GetType().Name;

            foreach (var para in oProp)
            {
                IniConfigMaping paraAtt = (IniConfigMaping)Attribute.GetCustomAttribute(para, typeof(IniConfigMaping));
                var             group   = defGroup;
                var             name    = para.Name;
                if (paraAtt == null)
                {
                    continue;
                }

                if (!string.IsNullOrWhiteSpace(paraAtt.Name))
                {
                    name = paraAtt.Name;
                }
                if (!string.IsNullOrWhiteSpace(paraAtt.Group))
                {
                    group = paraAtt.Group;
                }

                WritePrivateProfileString(group, name, T.ToString(para.GetValue(o, null)), fileInfo.FullName);
            }
        }
Пример #2
0
        public static O ReadIniFile <O>(String file) where O : new()
        {
            if (!File.Exists(file))
            {
                throw new IOException("文件:" + file + "不存在!");
            }
            FileInfo fileInfo = new FileInfo(file);
            O        o        = new O();
            var      oProp    = typeof(O).GetProperties();
            var      map      = new Dictionary <string, object>();
            var      defGroup = typeof(O).Name;

            foreach (var para in oProp)
            {
                IniConfigMaping paraAtt = (IniConfigMaping)Attribute.GetCustomAttribute(para, typeof(IniConfigMaping));
                var             group   = defGroup;
                var             name    = para.Name;
                if (paraAtt == null)
                {
                    continue;
                }

                if (!string.IsNullOrWhiteSpace(paraAtt.Name))
                {
                    name = paraAtt.Name;
                }
                if (!string.IsNullOrWhiteSpace(paraAtt.Group))
                {
                    group = paraAtt.Group;
                }

                Byte[] Buffer = new Byte[1024 * 2];
                int    bufLen = GetPrivateProfileString(group, name, T.ToString(para.GetValue(o, null)), Buffer, Buffer.GetUpperBound(0), fileInfo.FullName);
                string s      = Encoding.GetEncoding(0).GetString(Buffer, 0, bufLen);
                map.Add(para.Name, s);
            }

            return(TypeUtils.DicToObjct <O>(map));
        }