public static void ToINI(object value, string INIpath) { if (_log.IsDebugEnabled) { _log.DebugFormat("Starting {0}", MethodBase.GetCurrentMethod().ToString()); } INIContainer container = new INIContainer(INIpath); if (value != null) { foreach (PropertyInfo prop in value.GetType().GetProperties(BindingFlags.Instance | BindingFlags.Public)) { foreach (System.Attribute attr in prop.GetCustomAttributes(true)) { INIConversionAttribute nodeAttribute = attr as INIConversionAttribute; if (nodeAttribute != null) { object propObject = prop.GetValue(value, null); if (propObject != null) { string val = propObject.ToString(); if (prop.PropertyType == typeof(bool)) { val = (bool)propObject ? "1" : "0"; } INIKeyValueItem item = new INIKeyValueItem(nodeAttribute.INIParameterName, val, false); container.UpdateEntry(item); } else { if (container.Values.ContainsKey(nodeAttribute.INIParameterName)) { container.Values[nodeAttribute.INIParameterName].UseDefault = true; } else { INIKeyValueItem item = new INIKeyValueItem(nodeAttribute.INIParameterName, string.Empty, true); container.UpdateEntry(item); } } } } } container.SaveFile(INIpath); } if (_log.IsDebugEnabled) { _log.DebugFormat("Ending {0}", MethodBase.GetCurrentMethod().ToString()); } }
public static object ToObject(string INIpath, object value) { if (_log.IsDebugEnabled) { _log.DebugFormat("Starting {0}", MethodBase.GetCurrentMethod().ToString()); } if (value != null) { INIContainer container = new INIContainer(INIpath); foreach (PropertyInfo prop in value.GetType().GetProperties(BindingFlags.Instance | BindingFlags.Public)) { foreach (System.Attribute attr in prop.GetCustomAttributes(true)) { INIConversionAttribute nodeAttribute = attr as INIConversionAttribute; if (nodeAttribute != null) { if (container.Values.ContainsKey(nodeAttribute.INIParameterName)) { INIKeyValueItem item = container.Values[nodeAttribute.INIParameterName]; if (!item.UseDefault) { if (prop.PropertyType == typeof(bool)) { if (item.Value == "1") { prop.SetValue(value, true, null); } else if (item.Value == "0") { prop.SetValue(value, false, null); } else { bool b = false; if (bool.TryParse(item.Value, out b)) { prop.SetValue(value, b, null); } } } else if (prop.PropertyType == typeof(byte)) { byte b = 0; if (byte.TryParse(item.Value, out b)) { prop.SetValue(value, b, null); } } else if (prop.PropertyType == typeof(short)) { short b = 0; if (short.TryParse(item.Value, out b)) { prop.SetValue(value, b, null); } } else if (prop.PropertyType == typeof(int)) { int b = 0; if (int.TryParse(item.Value, out b)) { prop.SetValue(value, b, null); } } else if (prop.PropertyType == typeof(long)) { long b = 0; if (long.TryParse(item.Value, out b)) { prop.SetValue(value, b, null); } } else if (prop.PropertyType == typeof(double)) { double b = 0; if (double.TryParse(item.Value, out b)) { prop.SetValue(value, b, null); } } else if (prop.PropertyType == typeof(decimal)) { decimal b = 0; if (decimal.TryParse(item.Value, out b)) { prop.SetValue(value, b, null); } } else { prop.SetValue(value, item.Value, null); } } } } } } } if (_log.IsDebugEnabled) { _log.DebugFormat("Ending {0}", MethodBase.GetCurrentMethod().ToString()); } return(value); }