コード例 #1
0
        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);
        }
コード例 #2
0
        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);
            }
        }
コード例 #3
0
        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());
        }