private ListViewItem ComposeTraceListItem(TraceRecord tr)
        {
            InternalMessageInfo internalMessageInfo = ExtraceMessageLog(tr);
            int num = -1;

            if (tr.MessageProperties == MessageProperty.MessageIn)
            {
                num = TraceViewerForm.GetImageIndexFromImageList(Images.MessageReceiveTrace);
            }
            else if (tr.MessageProperties == MessageProperty.MessageOut)
            {
                num = TraceViewerForm.GetImageIndexFromImageList(Images.MessageSentTrace);
            }
            ListViewItem listViewItem = null;

            listViewItem = ((num == -1) ? new ListViewItem(new string[5]
            {
                (internalMessageInfo != null && !string.IsNullOrEmpty(internalMessageInfo.Action)) ? internalMessageInfo.Action : string.Empty,
                Utilities.GetShortTimeStringFromDateTime(tr.Time),
                string.IsNullOrEmpty(tr.Execution.ComputerName) ? tr.Execution.ProcessName : (tr.Execution.ComputerName + SR.GetString("SL_ExecutionSep") + tr.Execution.ProcessName),
                TraceViewerForm.GetActivityDisplayName(tr.ActivityID),
                (internalMessageInfo != null && !string.IsNullOrEmpty(internalMessageInfo.To)) ? internalMessageInfo.To : string.Empty
            }) : new ListViewItem(new string[5]
            {
                (internalMessageInfo != null && !string.IsNullOrEmpty(internalMessageInfo.Action)) ? internalMessageInfo.Action : string.Empty,
                Utilities.GetShortTimeStringFromDateTime(tr.Time),
                string.IsNullOrEmpty(tr.Execution.ComputerName) ? tr.Execution.ProcessName : (tr.Execution.ComputerName + SR.GetString("SL_ExecutionSep") + tr.Execution.ProcessName),
                TraceViewerForm.GetActivityDisplayName(tr.ActivityID),
                (internalMessageInfo != null && !string.IsNullOrEmpty(internalMessageInfo.To)) ? internalMessageInfo.To : string.Empty
            }, num));
            listViewItem.Tag = tr;
            if (currentDataSource != null && currentDataSource.Activities.ContainsKey(tr.ActivityID))
            {
                if (currentDataSource.Activities[tr.ActivityID].HasError)
                {
                    listViewItem.ForeColor = Color.Red;
                    ListViewItem listViewItem2 = listViewItem;
                    listViewItem2.Font = new Font(listViewItem2.Font, listViewItem.Font.Style | FontStyle.Bold);
                }
                else if (currentDataSource.Activities[tr.ActivityID].HasWarning)
                {
                    listViewItem.BackColor = Color.Yellow;
                }
            }
            return(listViewItem);
        }
 private void ReGroupTraceListByActivity()
 {
     try
     {
         listTraces.BeginUpdate();
         listTraces.VirtualMode = false;
         listTraces.Items.Clear();
         listTraces.Groups.Clear();
         Dictionary <string, ListViewGroup> dictionary = new Dictionary <string, ListViewGroup>();
         foreach (ListViewItem currentListViewItem in currentListViewItems)
         {
             TraceRecord  traceRecord  = (TraceRecord)currentListViewItem.Tag;
             ListViewItem listViewItem = ComposeTraceListItem(traceRecord);
             if (!string.IsNullOrEmpty(traceRecord.MessageActivityID))
             {
                 if (!dictionary.ContainsKey(traceRecord.MessageActivityID))
                 {
                     ListViewGroup value = listTraces.Groups.Add(TraceViewerForm.GetActivityDisplayName(traceRecord.MessageActivityID), TraceViewerForm.GetActivityDisplayName(traceRecord.MessageActivityID));
                     dictionary.Add(traceRecord.MessageActivityID, value);
                 }
                 listViewItem.Group = dictionary[traceRecord.MessageActivityID];
             }
             listTraces.Items.Add(listViewItem);
         }
         SortByColumn(true, 1);
     }
     catch (ArgumentOutOfRangeException)
     {
     }
     catch (Exception e)
     {
         ExceptionManager.GeneralExceptionFilter(e);
     }
     finally
     {
         listTraces.EndUpdate();
         traceCountStatusLabel.Text = SR.GetString("MsgView_Count") + listTraces.Items.Count.ToString(CultureInfo.InvariantCulture);
     }
 }
Ejemplo n.º 3
0
 private void ReloadKnownMessageHeaders(InternalMessageHeaders headers)
 {
     if (headers != null)
     {
         if (!string.IsNullOrEmpty(headers.messageId))
         {
             lblMessageID.Text = SR.GetString("FV_MSG_MSGID");
             txtMessageID.Text = headers.messageId;
         }
         else if (!string.IsNullOrEmpty(headers.relatesTo))
         {
             lblMessageID.Text = SR.GetString("FV_MSG_RelatesTo");
             txtMessageID.Text = headers.relatesTo;
         }
         txtAction.Text = headers.action;
         if (!string.IsNullOrEmpty(headers.activityId))
         {
             if (TraceViewerForm.IsActivityDisplayNameInCache(headers.activityId))
             {
                 lblActivityID.Text = SR.GetString("FV_MSG2_ActivityName");
                 txtActivityID.Text = TraceViewerForm.GetActivityDisplayName(headers.activityId);
             }
             else
             {
                 lblActivityID.Text = SR.GetString("FV_MSG2_ActivityId");
                 txtActivityID.Text = headers.activityId;
             }
         }
         else
         {
             lblActivityID.Text = SR.GetString("FV_MSG2_ActivityId");
             txtActivityID.Text = string.Empty;
         }
         txtFrom.Text    = headers.from;
         txtTo.Text      = headers.to;
         txtReplyTo.Text = headers.replyTo;
     }
 }
Ejemplo n.º 4
0
 public HorzBundTitleControl(ActivityTraceModeAnalyzer analyzer, IWindowlessControlContainer container)
 {
     if (analyzer != null)
     {
         InitializeComponent();
         this.container = container;
         Label value = new Label
         {
             AutoSize  = false,
             Dock      = DockStyle.Bottom,
             Height    = 1,
             BackColor = Utilities.GetColor(ApplicationColors.TitleBorder)
         };
         base.Controls.Add(value);
         WindowlessControlScale currentScale = container.GetCurrentScale();
         int num  = HorzBundRowControl.GetTimeBoxSize(currentScale).Width + HorzBundRowControl.GetDefaultBlank(currentScale);
         int num2 = num + ExecutionCellControl.GetDefaultBlank(currentScale);
         int num3 = num;
         foreach (ExecutionColumnItem executionColumnItem in analyzer.ExecutionColumnItems)
         {
             int        num4       = TraceRecordCellControl.GetControlSize(currentScale).Width *executionColumnItem.ActivityColumnCount + ExecutionCellControl.GetDefaultBlock(currentScale) * (executionColumnItem.ActivityColumnCount - 1) + 2 * ExecutionCellControl.GetDefaultBlank(currentScale);
             PictureBox pictureBox = new PictureBox();
             toolTip.SetToolTip(pictureBox, (string)pictureBox.Tag);
             pictureBox.Location    = new Point(num, 0);
             pictureBox.BorderStyle = BorderStyle.None;
             pictureBox.Image       = processTitleBackImage;
             pictureBox.SizeMode    = PictureBoxSizeMode.StretchImage;
             pictureBox.Size        = new Size(num4, GetDefaultVSize(currentScale));
             mainPanel.Controls.Add(pictureBox);
             num  += num4 + HorzBundRowControl.GetDefaultBlock(currentScale);
             num3 += num4;
             Label label = new Label();
             if (TraceViewerForm.IsThreadExecutionMode)
             {
                 label.Text = executionColumnItem.CurrentExecutionInfo.ProcessName + SR.GetString("CF_LeftB") + executionColumnItem.CurrentExecutionInfo.ThreadID + SR.GetString("CF_RightB");
             }
             else
             {
                 label.Text = executionColumnItem.CurrentExecutionInfo.ProcessName;
             }
             label.Font      = GetDefaultFont(currentScale);
             label.TextAlign = ContentAlignment.MiddleCenter;
             label.Dock      = DockStyle.Fill;
             label.BackColor = Color.Transparent;
             toolTip.SetToolTip(label, executionColumnItem.CurrentExecutionInfo.ToString());
             pictureBox.Controls.Add(label);
             for (int i = 0; i < executionColumnItem.ActivityColumnCount; i++)
             {
                 Activity currentActivity     = executionColumnItem[i].CurrentActivity;
                 Label    label2              = new Label();
                 string   activityDisplayName = TraceViewerForm.GetActivityDisplayName(currentActivity);
                 toolTip.SetToolTip(label2, activityDisplayName);
                 int       index     = -1;
                 ImageList imageList = null;
                 if (container.GetCurrentScale() != WindowlessControlScale.XSmall)
                 {
                     if (executionColumnItem[i].CurrentActivity != null && executionColumnItem[i].CurrentActivity.ActivityType == ActivityType.RootActivity)
                     {
                         imageList = TraceViewerForm.GetImageFromImageList(Images.RootActivity, out index);
                     }
                     else if (executionColumnItem[i].CurrentActivity != null && ActivityAnalyzerHelper.IsHostRelatedActivity(executionColumnItem[i].CurrentActivity))
                     {
                         imageList = ((executionColumnItem[i].CurrentActivity.ActivityType != ActivityType.ListenActivity) ? TraceViewerForm.GetImageFromImageList(Images.HostActivityIcon, out index) : TraceViewerForm.GetImageFromImageList(Images.ListenActivity, out index));
                     }
                     else if (executionColumnItem[i].CurrentActivity != null && ActivityAnalyzerHelper.IsMessageRelatedActivity(executionColumnItem[i].CurrentActivity))
                     {
                         imageList = TraceViewerForm.GetImageFromImageList(Images.MessageActivityIcon, out index);
                         if (executionColumnItem[i].CurrentActivity.ActivityType == ActivityType.UserCodeExecutionActivity)
                         {
                             imageList = TraceViewerForm.GetImageFromImageList(Images.ExecutionActivityIcon, out index);
                         }
                         else if (executionColumnItem[i].CurrentActivity.ActivityType == ActivityType.ConnectionActivity)
                         {
                             imageList = TraceViewerForm.GetImageFromImageList(Images.ConnectionActivityIcon, out index);
                         }
                     }
                     else
                     {
                         imageList = TraceViewerForm.GetImageFromImageList(Images.DefaultActivityIcon, out index);
                     }
                 }
                 if (index != -1 && imageList != null)
                 {
                     label2.ImageList  = imageList;
                     label2.ImageIndex = index;
                     label2.ImageAlign = ContentAlignment.MiddleCenter;
                 }
                 else
                 {
                     label2.Text = SR.GetString("SL_ATitle");
                 }
                 label2.BackColor    = Color.Transparent;
                 label2.DoubleClick += lblActivity_DoubleClick;
                 label2.Tag          = currentActivity;
                 label2.Font         = GetDefaultFont(currentScale);
                 label2.BorderStyle  = BorderStyle.None;
                 label2.TextAlign    = ContentAlignment.TopCenter;
                 label2.Location     = new Point(num2, GetDefaultVSize(currentScale));
                 label2.Size         = new Size(TraceRecordCellControl.GetControlSize(currentScale).Width, GetDefaultVSize(currentScale));
                 SetupContextMenuForActivityTitle(label2, executionColumnItem[i], analyzer, currentScale);
                 mainPanel.Controls.Add(label2);
                 num2 += TraceRecordCellControl.GetControlSize(currentScale).Width + ExecutionCellControl.GetDefaultBlock(currentScale);
             }
             num2 -= ExecutionCellControl.GetDefaultBlock(currentScale) - ExecutionCellControl.GetDefaultBlank(currentScale);
             num2 += HorzBundRowControl.GetDefaultBlock(currentScale) + ExecutionCellControl.GetDefaultBlank(currentScale);
         }
         if (analyzer.ExecutionColumnItems.Count > 1)
         {
             num3 += HorzBundRowControl.GetDefaultBlock(currentScale) * (analyzer.ExecutionColumnItems.Count - 1);
         }
         lblDate.Font     = new Font(WindowlessControlBase.CreateFont(HorzBundRowControl.GetFontSize(currentScale)), FontStyle.Bold);
         lblDate.Width    = HorzBundRowControl.GetTimeBoxSize(currentScale).Width;
         lblDate.Height   = GetDefaultHSize(currentScale);
         lblDate.Location = new Point(0, 10);
         container.RegisterExtentionEventListener(OnWindowlessControlExtentionEvent);
         base.Size = new Size(num3, GetDefaultHSize(currentScale));
     }
 }
 public static void EnlistRecognizedElements(XmlNode node, List <TraceProperty> listProperty, bool ignoreSubTreeNodes, int depth)
 {
     if (depth < 10 && node != null && !ExcludedXmlNodes.Contains(node.Name))
     {
         string text = Utilities.TradeOffXmlPrefixForName(node.Name);
         if (ignoreSubTreeNodes && SubTreeRootXmlNodes.Contains(text) && SubTreeRootXmlNodeValidator(node, text))
         {
             listProperty.Add(new TraceProperty(node.Name, node.OuterXml, isAttribute: false, isXmlFormat: true));
         }
         else
         {
             if (node.Attributes != null)
             {
                 foreach (XmlAttribute attribute in node.Attributes)
                 {
                     if (!ExcludedXmlAttributes.Contains(Utilities.TradeOffXmlPrefixForName(attribute.Name)))
                     {
                         listProperty.Add(new TraceProperty(SR.GetString("FV_MSG2_LeftQ") + node.Name + SR.GetString("FV_MSG2_RightQ") + attribute.Name, attribute.Value, isAttribute: false, isXmlFormat: false));
                     }
                 }
             }
             if (node.HasChildNodes)
             {
                 foreach (XmlNode childNode in node.ChildNodes)
                 {
                     if (string.Compare(childNode.Name, "#text", true, CultureInfo.CurrentUICulture) == 0 && !string.IsNullOrEmpty(childNode.Value))
                     {
                         if (string.Compare(Utilities.TradeOffXmlPrefixForName(node.Name), "ActivityId", true, CultureInfo.CurrentUICulture) == 0)
                         {
                             string text2 = TraceRecord.NormalizeActivityId(childNode.InnerText);
                             if (!string.IsNullOrEmpty(text2) && TraceViewerForm.IsActivityDisplayNameInCache(text2))
                             {
                                 listProperty.Add(new TraceProperty(SR.GetString("FV_Basic_ActivityName"), TraceViewerForm.GetActivityDisplayName(text2), isAttribute: false, isXmlFormat: false));
                             }
                             else
                             {
                                 listProperty.Add(new TraceProperty(SR.GetString("FV_Basic_ActivityID"), text2, isAttribute: false, isXmlFormat: false));
                             }
                         }
                         else
                         {
                             listProperty.Add(new TraceProperty(node.Name, childNode.InnerText, isAttribute: false, isXmlFormat: false));
                         }
                     }
                     else
                     {
                         EnlistRecognizedElements(childNode, listProperty, ignoreSubTreeNodes, depth + 1);
                     }
                 }
             }
             else if (!string.IsNullOrEmpty(node.Value) && !ExcludedXmlNodes.Contains(Utilities.TradeOffXmlPrefixForName(node.Name)))
             {
                 if (string.Compare(Utilities.TradeOffXmlPrefixForName(node.Name), "ActivityId", true, CultureInfo.CurrentUICulture) == 0)
                 {
                     listProperty.Add(new TraceProperty(node.Name, TraceViewerForm.GetActivityDisplayName(TraceRecord.NormalizeActivityId(node.InnerText)), isAttribute: false, isXmlFormat: false));
                 }
                 else
                 {
                     listProperty.Add(new TraceProperty(node.Name, node.Value, isAttribute: false, isXmlFormat: false));
                 }
             }
         }
     }
 }
Ejemplo n.º 6
0
 public void ReloadTrace(TraceRecord trace)
 {
     CleanUp();
     if (trace != null)
     {
         ListViewItem listViewItem = null;
         string       text         = TraceRecord.NormalizeActivityId(trace.ActivityID);
         listViewItem = ((!TraceViewerForm.IsActivityDisplayNameInCache(text)) ? new ListViewItem(new string[2]
         {
             SR.GetString("FV_Basic_ActivityID"),
             text
         }) : new ListViewItem(new string[2]
         {
             SR.GetString("FV_Basic_ActivityName"),
             TraceViewerForm.GetActivityDisplayName(text)
         }));
         listView.Items.Add(listViewItem);
         if (trace.IsTransfer && !string.IsNullOrEmpty(trace.RelatedActivityID))
         {
             string text2 = TraceRecord.NormalizeActivityId(trace.RelatedActivityID);
             listViewItem = ((!TraceViewerForm.IsActivityDisplayNameInCache(text2)) ? new ListViewItem(new string[2]
             {
                 SR.GetString("FV_Basic_RelatedActivityID"),
                 text2
             }) : new ListViewItem(new string[2]
             {
                 SR.GetString("FV_Basic_RelatedActivityName"),
                 TraceViewerForm.GetActivityDisplayName(text2)
             }));
             listView.Items.Add(listViewItem);
         }
         listViewItem = new ListViewItem(new string[2]
         {
             SR.GetString("FV_Basic_Time"),
             trace.Time.ToString(dateTimeFormat, CultureInfo.CurrentUICulture)
         });
         listView.Items.Add(listViewItem);
         listViewItem = new ListViewItem(new string[2]
         {
             SR.GetString("FV_Basic_Level"),
             trace.Level.ToString()
         });
         listView.Items.Add(listViewItem);
         listViewItem = new ListViewItem(new string[2]
         {
             SR.GetString("FV_Basic_Source"),
             trace.SourceName
         });
         listView.Items.Add(listViewItem);
         listViewItem = new ListViewItem(new string[2]
         {
             SR.GetString("FV_Basic_Process"),
             trace.ProcessName
         });
         listView.Items.Add(listViewItem);
         listViewItem = new ListViewItem(new string[2]
         {
             SR.GetString("FV_Basic_Thread"),
             trace.ThreadId.ToString(CultureInfo.CurrentCulture)
         });
         listView.Items.Add(listViewItem);
         listViewItem = new ListViewItem(new string[2]
         {
             SR.GetString("FV_Basic_Computer"),
             (trace.Execution != null) ? trace.Execution.ComputerName : string.Empty
         });
         listView.Items.Add(listViewItem);
         listViewItem = new ListViewItem(new string[2]
         {
             SR.GetString("FV_Basic_TraceIdentifier"),
             trace.TraceCode
         });
         listView.Items.Add(listViewItem);
     }
 }
Ejemplo n.º 7
0
 private void EnlistMessageHeadersTree(XmlNode xmlNode, TreeNode treeNode, InternalMessageHeaders headers, int depth)
 {
     if (depth < 10 && xmlNode != null && treeNode != null && !TraceDetailedProcessParameter.ExcludedXmlNodes.Contains(Utilities.TradeOffXmlPrefixForName(xmlNode.Name)))
     {
         if (xmlNode.Attributes != null)
         {
             foreach (XmlAttribute attribute in xmlNode.Attributes)
             {
                 if (!TraceDetailedProcessParameter.ExcludedXmlAttributes.Contains(Utilities.TradeOffXmlPrefixForName(attribute.Name)))
                 {
                     treeNode.Nodes.Add(SR.GetString("FV_PROPERTY_HEADER") + attribute.Name + SR.GetString("FV_EQUAL") + attribute.Value);
                 }
             }
         }
         string text  = Utilities.TradeOffXmlPrefixForName(xmlNode.Name);
         bool   flag  = false;
         bool   flag2 = false;
         string b     = null;
         if (generalPropertyNodeValuePair.ContainsKey(text))
         {
             flag = true;
             if (generalPropertyNodeValuePair[text] == "this")
             {
                 flag2 = true;
             }
             else
             {
                 b = generalPropertyNodeValuePair[text];
             }
         }
         if (xmlNode.HasChildNodes)
         {
             foreach (XmlNode childNode in xmlNode.ChildNodes)
             {
                 if (string.Compare(childNode.Name, "#text", true, CultureInfo.CurrentUICulture) == 0 && !string.IsNullOrEmpty(childNode.Value))
                 {
                     if (string.Compare(Utilities.TradeOffXmlPrefixForName(xmlNode.Name), "ActivityId", true, CultureInfo.CurrentUICulture) == 0)
                     {
                         string text2 = TraceRecord.NormalizeActivityId(xmlNode.ChildNodes[0].Value);
                         if (!string.IsNullOrEmpty(text2) && TraceViewerForm.IsActivityDisplayNameInCache(text2))
                         {
                             treeNode.Text = SR.GetString("FV_MSG2_ActivityName2") + SR.GetString("FV_EQUAL") + TraceViewerForm.GetActivityDisplayName(text2);
                         }
                         else
                         {
                             treeNode.Text = "ActivityId" + SR.GetString("FV_EQUAL") + text2;
                         }
                     }
                     else
                     {
                         treeNode.Text = xmlNode.Name + SR.GetString("FV_EQUAL") + xmlNode.ChildNodes[0].Value;
                     }
                     if (flag && flag2)
                     {
                         AssignHeaderInfo(headers, text, childNode.Value);
                     }
                 }
                 else
                 {
                     TreeNode treeNode2 = new TreeNode(childNode.Name);
                     treeNode.Nodes.Add(treeNode2);
                     EnlistMessageHeadersTree(childNode, treeNode2, headers, depth + 1);
                     if (flag && Utilities.TradeOffXmlPrefixForName(childNode.Name) == b && childNode.HasChildNodes)
                     {
                         foreach (XmlNode childNode2 in childNode.ChildNodes)
                         {
                             if (string.Compare(childNode2.Name, "#text", true, CultureInfo.CurrentUICulture) == 0 && !string.IsNullOrEmpty(childNode2.Value))
                             {
                                 AssignHeaderInfo(headers, text, childNode2.Value);
                             }
                         }
                     }
                 }
             }
         }
         else if (!string.IsNullOrEmpty(xmlNode.Value) && !TraceDetailedProcessParameter.ExcludedXmlNodes.Contains(Utilities.TradeOffXmlPrefixForName(xmlNode.Name)))
         {
             if (string.Compare(Utilities.TradeOffXmlPrefixForName(xmlNode.Name), "ActivityId", true, CultureInfo.CurrentUICulture) == 0)
             {
                 string text3 = TraceRecord.NormalizeActivityId(xmlNode.ChildNodes[0].Value);
                 if (!string.IsNullOrEmpty(text3) && TraceViewerForm.IsActivityDisplayNameInCache(text3))
                 {
                     treeNode.Text = SR.GetString("FV_MSG2_ActivityName2") + SR.GetString("FV_EQUAL") + TraceViewerForm.GetActivityDisplayName(text3);
                 }
                 else
                 {
                     treeNode.Text = "ActivityId" + SR.GetString("FV_EQUAL") + text3;
                 }
             }
             else
             {
                 treeNode.Text = xmlNode.Name + SR.GetString("FV_EQUAL") + xmlNode.ChildNodes[0].Value;
             }
         }
     }
 }
 private void EnlistProperties(XmlNode node, InternalMessageTraceInfo info)
 {
     if (node != null && info != null && node.HasChildNodes)
     {
         List <TraceDetailedProcessParameter.TraceProperty> list = new List <TraceDetailedProcessParameter.TraceProperty>();
         TraceDetailedProcessParameter.EnlistRecognizedElements(node, list, false, 0);
         if (node.Name != "Properties")
         {
             foreach (TraceDetailedProcessParameter.TraceProperty item in list)
             {
                 if (string.Compare(Utilities.TradeOffXmlPrefixForName(item.PropertyName), "ActivityId", true, CultureInfo.CurrentUICulture) == 0)
                 {
                     string text = TraceRecord.NormalizeActivityId(item.PropertyValue);
                     if (!string.IsNullOrEmpty(text) && TraceViewerForm.IsActivityDisplayNameInCache(text))
                     {
                         info.properties.Add(new TraceDetailedProcessParameter.TraceProperty(SR.GetString("FV_MSG2_LeftQ") + SR.GetString("FV_MSG2_ActivityName2") + SR.GetString("FV_MSG2_RightQ") + item.PropertyName, TraceViewerForm.GetActivityDisplayName(text), item.IsXmlAttribute, item.IsXmlFormat));
                     }
                     else
                     {
                         info.properties.Add(new TraceDetailedProcessParameter.TraceProperty(SR.GetString("FV_MSG2_LeftQ") + "ActivityId" + SR.GetString("FV_MSG2_RightQ") + item.PropertyName, text, item.IsXmlAttribute, item.IsXmlFormat));
                     }
                 }
                 else
                 {
                     info.properties.Add(new TraceDetailedProcessParameter.TraceProperty(SR.GetString("FV_MSG2_LeftQ") + node.Name + SR.GetString("FV_MSG2_RightQ") + item.PropertyName, item.PropertyValue, item.IsXmlAttribute, item.IsXmlFormat));
                 }
             }
         }
         else
         {
             info.properties.AddRange(list);
         }
     }
 }