Ejemplo n.º 1
0
 /// <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);
     }
 }
Ejemplo n.º 2
0
        /// <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);
        }