コード例 #1
0
ファイル: CAutoConfig.cs プロジェクト: zoro-008/Works
        /// <summary>
        /// 클래스 인스턴스를 받아서 자동으로 ini파일로 세이브 해준다.
        /// 배열은 일단 1차배열까지만 지원되고
        /// 지원 자료형은 int,double,bool,string
        /// </summary>
        /// <typeparam name="T">클래스형</typeparam>
        /// <param name="_bLoad">true일경우 Load,false일경우 Save</param>
        /// <param name="_sFilePath">저장혹은 읽기를 할 ini파일의 FullPass</param>
        /// <param name="_oObj">저장 혹은 읽기를 할 클래스의 인스턴스</param>
        /// <returns>읽기의 경우 파일이 없으면 false</returns>
        public bool LoadSave <T>(bool _bLoad, string _sFilePath, ref T _oObj) //박싱 언박싱용. 이렇게 안하면 스트럭쳐는 안된다. Call By Value...
        {
            bool bRet;

            using (CConfig Config = new CConfig())
            {
                if (_bLoad)
                {
                    if (!File.Exists(_sFilePath))
                    {
                        return(false);
                    }

                    Log.Trace("Load Obj Start", _sFilePath);
                    //파일에서 읽어서 테이블 만듬.
                    Config.Load(_sFilePath, CConfig.EN_CONFIG_FILE_TYPE.ftIni);
                    object obj = _oObj;
                    bRet  = LoadObj(Config, _oObj);
                    _oObj = (T)obj;
                    Log.Trace("Load Obj End", _sFilePath);

                    return(true);
                }
                else
                {
                    Log.Trace("Save Obj Start", _sFilePath);
                    object obj = _oObj;
                    bRet  = SaveObj(Config, _oObj);
                    _oObj = (T)obj;
                    Config.Save(_sFilePath, CConfig.EN_CONFIG_FILE_TYPE.ftIni);
                    Log.Trace("Save Obj End", _sFilePath);
                }
            }
            return(bRet);
        }