internal HdaBrowseNode Browse(string address) { var browseElements = _browser.Browse(new ItemIdentifier(string.IsNullOrWhiteSpace(address) ? null : address)); var root = new HdaBrowseNode { Tag = string.IsNullOrEmpty(address) ? "" : address, Name = string.IsNullOrEmpty(address) ? "Root" : address, Root = true, HasChildren = browseElements.Length > 0 }; this.GetNodes(root, browseElements); return(root); }
private void GetNodes(HdaBrowseNode node, BrowseElement[] browseElements) { foreach (var browseElement in browseElements) { node.Nodes.Add(new HdaBrowseNode { Tag = browseElement.ItemName, Item = browseElement.IsItem, Name = browseElement.Name, HasChildren = browseElement.HasChildren, OpcBrowseElement = browseElement }); } foreach (var hdaBrowseNode in node.Nodes.Where(x => x.HasChildren).ToList()) { var elements = _browser.Browse(new ItemIdentifier(hdaBrowseNode.Tag)); GetNodes(hdaBrowseNode, elements); } }
private string GetNodes(HdaBrowseNode node, int level) { Func <string, int, string> repeat = (str, count) => { var res = ""; for (var i = 0; i < count; i++) { res += str; } return(res); }; var sb = new StringBuilder(); sb.AppendLine(repeat(" ", level) + $"Name: {node.Name}, Address: {node.Tag}, IsItem: {node.Item}"); foreach (var hdaBrowseNode in node.Nodes) { sb.Append(GetNodes(hdaBrowseNode, level + 1)); } return(sb.ToString()); }