/// <summary"反序列化"> /// 给定的序列化的字符串进行反序列化为object对象 /// </summary> /// <param name="val">序列化过的字符串</param> /// <returns>返回的反序列化的对象</returns> public static DataUnitDescription Deserialize(string val) { try { if (!val.StartsWith(c_Name)) { return(null); } string rs = val.Substring(c_Name.Length, val.Length - c_Name.Length); string[] pinfs = rs.Split(new string[] { "\r" }, StringSplitOptions.RemoveEmptyEntries); if (pinfs == null || pinfs.GetLength(0) == 0) { return(null); } string[] values = null; DataUnitDescription dud = new DataUnitDescription(); System.Reflection.PropertyInfo pinf = null; object vs = null; foreach (string prop in pinfs) { if (prop == null) { continue; } values = prop.Split(new string[] { "=" }, StringSplitOptions.RemoveEmptyEntries); if (values == null || values.GetLength(0) != 2) { continue; } pinf = dud.GetType().GetProperty(values[0]); if (pinf == null) { continue; } vs = Convert.ChangeType(values[1], pinf.PropertyType); pinf.SetValue(dud, vs, null); } return(dud); } catch { return(null); } }
/// <summary "序列化"> /// 给定的object对象进行序列化为字符串 /// </summary> /// <param name="obj"> 序列化的目标源</param> /// <returns>序列化过的字符串</returns> public static string Serialize(DataUnitDescription dud) { if (dud == null) { return(""); } string rs = c_Name; string value = ""; System.Reflection.PropertyInfo[] pinfs = dud.GetType().GetProperties(); foreach (System.Reflection.PropertyInfo pinf in pinfs) { //if (pinf.Attributes.ToString() != "SerializePropertyAttribute") continue; value = pinf.GetValue(dud, null).ToString(); value = value.Replace("=", ""); value = value.Replace("\r", ""); rs += "\r" + pinf.Name + "=" + value; } return(rs); }