/// <summary> /// 增加SubTagGroup对象 /// </summary> /// <param name="group">SubTagGroup对象</param> public override void Add(CustomSubTagGroup group) { if (!(group is SiemensSubTagGroup)) { throw new Exception("group对象必须是SiemensSubTagGroup对象"); } SiemensSubTagGroup sGroup = group as SiemensSubTagGroup; if (sGroup.Parent != _parent) { throw new Exception("group对象隶属的TagGroup和当前SubTagGroup集合不是同一个TagGroup"); } if (_groups.Keys.Contains(sGroup.Prefix)) { throw new Exception($"当前SubTagGroup集合中已经存在前缀[{sGroup.Prefix}]的SubTagGroup!"); } _groups.Add(sGroup.Prefix, group); }
/// <summary> /// 查找指定的Tag /// </summary> /// <param name="name">标记组名称</param> /// <param name="tagName">标记名称</param> /// <returns>查找到的CustomTag对象,若没有找到则返回null</returns> public override CustomTag FindTag(string name, string tagName) { if (name == "" || tagName == "") { return(null); } string[] names = name.Split('.'); string groupName = names[0]; string subGroupName = names.Length >= 2 ? names[1] : ""; CustomTagGroup group = _groups[groupName]; if (group == null) { return(null); } else { if (subGroupName == "") { return(((SiemensTagGroup)group).Tags[tagName]); } else { CustomSubTagGroup subGroup = ((SiemensTagGroup)group).SubGroups[subGroupName]; if (subGroup == null) { return(null); } else { return(((SiemensSubTagGroup)subGroup).Tags[tagName]); } } } }