Esempio n. 1
0
        /// <summary>
        /// 命令字符串转换实体类
        /// </summary>
        /// <param name="index"></param>
        /// <param name="command"></param>
        /// <param name="responseResultName"></param>
        public override void CommandStringToClass(int index, string command, string responseResultName)
        {
            if (command.Length <= index)
            {
                return;
            }

            string      xmlContent  = command.Substring(index);
            XmlDocument xmlDocument = new XmlDocument();

            xmlDocument.LoadXml(xmlContent);

            XmlNodeList lstNodes = xmlDocument.SelectNodes("ResponseEntity");
            XmlNode     xmlNode  = null;

            // 获取返回的头部信息
            Type type = this.GetType();

            PropertyInfo[] proInfos = type.GetProperties();
            foreach (XmlNode node in lstNodes)
            {
                foreach (PropertyInfo info in proInfos)
                {
                    if (info.Name.Equals("Results"))
                    {
                        continue;
                    }

                    xmlNode = node.SelectSingleNode(info.Name);
                    if (xmlNode != null)
                    {
                        info.SetValue(this,
                                      string.IsNullOrEmpty(xmlNode.InnerText)
                            ? null : Convert.ChangeType(xmlNode.InnerText, info.PropertyType), null);
                    }
                }
            }

            if (!string.IsNullOrEmpty(responseResultName))
            {
                Assembly assm = Assembly.Load("Cn.Vcredit.AMS.BaseService");
                Results = assm.CreateInstance(responseResultName) as ResponseResult;
                if (Results != null)
                {
                    Results.CommandStringToClass(xmlContent);
                }
            }
        }