public virtual string GetMembersXml(ref string content) { int orderCode; StringBuilder stringBuilder = new StringBuilder(); stringBuilder.Append("<Parameter>"); MemberInfo[] members = this.GetType().GetMembers(); if (this.TransformCode == -1) { orderCode = (int)this.OrderCode; } else { orderCode = this.TransformCode; } int num = orderCode; Dictionary <string, string> strs = new Dictionary <string, string>(); string groupName = ""; MemberInfo[] memberInfoArray = members; for (int i = 0; i < (int)memberInfoArray.Length; i++) { MemberInfo memberInfo = memberInfoArray[i]; TrafficProtocolAttribute customAttribute = Attribute.GetCustomAttribute(memberInfo, typeof(TrafficProtocolAttribute)) as TrafficProtocolAttribute; TrafficProtocolAttrForArrayAttribute trafficProtocolAttrForArrayAttribute = Attribute.GetCustomAttribute(memberInfo, typeof(TrafficProtocolAttrForArrayAttribute)) as TrafficProtocolAttrForArrayAttribute; TrafficProtocolAttrGroupAttribute trafficProtocolAttrGroupAttribute = Attribute.GetCustomAttribute(memberInfo, typeof(TrafficProtocolAttrGroupAttribute)) as TrafficProtocolAttrGroupAttribute; if (customAttribute != null) { stringBuilder.Append(this.GetSingleProperty(customAttribute, memberInfo, num, ref content)); } else if (trafficProtocolAttrForArrayAttribute != null) { stringBuilder.Append(this.GetArrayProperty(trafficProtocolAttrForArrayAttribute, memberInfo, num, ref content)); } else if (trafficProtocolAttrGroupAttribute != null) { if (trafficProtocolAttrGroupAttribute.HasContainOrderCoder(num.ToString())) { groupName = trafficProtocolAttrGroupAttribute.GroupName; string str = this.GetType().GetProperty(memberInfo.Name).GetValue(this, null).ToString(); strs.Add(trafficProtocolAttrGroupAttribute.XmlTag, str); } } } stringBuilder.Append(this.GetGroupAttr(strs, groupName, ref content)); stringBuilder.Append("</Parameter>"); return(stringBuilder.ToString()); }
private string GetArrayProperty(TrafficProtocolAttrForArrayAttribute attr, MemberInfo m, int tmpOrderCoder, ref string content) { string str; if (attr.OrderCodelist.IndexOf(string.Concat(",", tmpOrderCoder.ToString(), ",")) >= 0) { ArrayList value = this.GetType().GetProperty(m.Name).GetValue(this, null) as ArrayList; StringBuilder stringBuilder = new StringBuilder(); string item = TrafficProtocolAttrForArrayAttribute.DicOrderCode2XmlTag[tmpOrderCoder]; string[] strArrays = new string[] { "," }; string[] strArrays1 = item.Split(strArrays, StringSplitOptions.RemoveEmptyEntries); if (value != null) { for (int i = 0; i < value.Count; i++) { string[] item1 = value[i] as string[]; int num = 0; while (true) { if ((num >= (int)item1.Length ? true : num >= (int)strArrays1.Length)) { break; } strArrays = new string[] { "<", strArrays1[num], ">", item1[num], "</", strArrays1[num], ">" }; stringBuilder.Append(string.Concat(strArrays)); string str1 = content; strArrays = new string[] { str1, strArrays1[num], "-", item1[num], "," }; content = string.Concat(strArrays); num++; } } } str = stringBuilder.ToString(); } else { str = ""; } return(str); }
private string GetArrayProperty(TrafficProtocolAttrForArrayAttribute attr, MemberInfo m, int tmpOrderCoder, ref string content) { string str; if (attr.OrderCodelist.IndexOf(string.Concat(",", tmpOrderCoder.ToString(), ",")) >= 0) { ArrayList value = this.GetType().GetProperty(m.Name).GetValue(this, null) as ArrayList; StringBuilder stringBuilder = new StringBuilder(); string item = TrafficProtocolAttrForArrayAttribute.DicOrderCode2XmlTag[tmpOrderCoder]; string[] strArrays = new string[] { "," }; string[] strArrays1 = item.Split(strArrays, StringSplitOptions.RemoveEmptyEntries); if (value != null) { for (int i = 0; i < value.Count; i++) { string[] item1 = value[i] as string[]; int num = 0; while (true) { if ((num >= (int)item1.Length ? true : num >= (int)strArrays1.Length)) { break; } strArrays = new string[] { "<", strArrays1[num], ">", item1[num], "</", strArrays1[num], ">" }; stringBuilder.Append(string.Concat(strArrays)); string str1 = content; strArrays = new string[] { str1, strArrays1[num], "-", item1[num], "," }; content = string.Concat(strArrays); num++; } } } str = stringBuilder.ToString(); } else { str = ""; } return str; }