public override void CopyFrom(object obj)
 {
     if (obj is RequestStatus)
     {
         RequestStatus rs = (RequestStatus)obj;
         StatusCode = new StatusCode();
         StatusCode.CopyFrom(rs.StatusCode);
         StatusDesc = new Text(rs.StatusDesc.Value);
         if (rs.ExtData != null)
             ExtData = new Text(rs.ExtData.Value);
     }
     base.CopyFrom(obj);
 }
        public override bool TryParse(string value, ref object obj)
        {
            RequestStatus rs = (RequestStatus)obj;
            Match match = Regex.Match(value, @"(\.*[^\\]);(\.*[^\\])(;(\.*))?");
            if (match.Success)
            {
                if (!match.Groups[1].Success || 
                    !match.Groups[2].Success)
                    return false;

                StatusCode = new StatusCode(match.Groups[1].Value);
                StatusDesc = new Text(match.Groups[1].Value);
                if (match.Groups[3].Success)
                    ExtData = new Text(match.Groups[4].Value);
            }
            return false;            
        }