private bool SaveObj(CConfig _cConfig, object _oObj) { Type ObjType = _oObj.GetType(); FieldInfo[] ObjFieldInfo = ObjType.GetFields(); string sMemName; string sMemType; Type MemType; object oTemp; string sValue = string.Empty; foreach (FieldInfo MemInfo in ObjFieldInfo) { sMemName = MemInfo.Name; sMemType = MemInfo.FieldType.FullName; MemType = MemInfo.FieldType; if (MemType == typeof(int) || MemType == typeof(bool) || MemType == typeof(double) || MemType == typeof(string)) { oTemp = MemInfo.GetValue(_oObj); if (oTemp != null) { sValue = MemInfo.GetValue(_oObj).ToString(); } else { sValue = ""; } _cConfig.SetValue(ObjType.Name, sMemName, sValue); Log.Trace(sMemName, sValue); } else if (MemType == typeof(int[])) { int[] iAray = (int[])MemInfo.GetValue(_oObj); string sIndex; for (int i = 0; i < iAray.Length; i++) { sIndex = string.Format("{0}({1})", sMemName, i); _cConfig.SetValue(ObjType.Name, sIndex, iAray[i]); Log.Trace(sIndex, iAray[i].ToString()); } } else if (MemType == typeof(bool[])) { bool[] bAray = (bool[])MemInfo.GetValue(_oObj); string sIndex; for (int i = 0; i < bAray.Length; i++) { sIndex = string.Format("{0}({1})", sMemName, i); _cConfig.SetValue(ObjType.Name, sIndex, bAray[i]); Log.Trace(sIndex, bAray[i].ToString()); } } else if (MemType == typeof(double[])) { double[] dAray = (double[])MemInfo.GetValue(_oObj); string sIndex; for (int i = 0; i < dAray.Length; i++) { sIndex = string.Format("{0}({1})", sMemName, i); _cConfig.SetValue(ObjType.Name, sIndex, dAray[i]); Log.Trace(sIndex, dAray[i].ToString()); } } else if (MemType == typeof(string[])) { string[] sAray = (string[])MemInfo.GetValue(_oObj); string sIndex; for (int i = 0; i < sAray.Length; i++) { sIndex = string.Format("{0}({1})", sMemName, i); _cConfig.SetValue(ObjType.Name, sIndex, sAray[i]); Log.Trace(sIndex, sAray[i].ToString()); } } } return(true); }