private void Classificator(Tag addingTag) { if (addingTag.TagDirection == Direction.Write) { if (!allWriteTags.ContainsKey(addingTag.Name)) { allWriteTags.Add(addingTag.Name, addingTag); } return; } if (addingTag.InnerTag is BoolTag) { if (!allBoolTags.ContainsKey(addingTag.Name)) { allBoolTags.Add(addingTag.Name, (addingTag.InnerTag as BoolTag)); } } else if (addingTag.InnerTag is UshortTag) { allUshortTags.Add(addingTag.Name, (addingTag.InnerTag as UshortTag)); } else if (addingTag.InnerTag is FloatTag) { allFloatTags.Add(addingTag.Name, (addingTag.InnerTag as FloatTag)); } else if (addingTag.InnerTag is UintTag) { allUintTags.Add(addingTag.Name, (addingTag.InnerTag as UintTag)); } if (addingTag.InnerTag.Function == StatusFunction.CoilStatus) { if (!CoilStatuses.ContainsKey(addingTag.Name)) { CoilStatuses.Add(addingTag.Name, (addingTag.InnerTag)); } } else if (addingTag.InnerTag.Function == StatusFunction.InputStatus) { if (!InputStatuses.ContainsKey(addingTag.Name)) { InputStatuses.Add(addingTag.Name, (addingTag.InnerTag)); } } else if (addingTag.InnerTag.Function == RegisterFunction.HoldingRegister) { if (!HoldingRegisters.ContainsKey(addingTag.Name)) { HoldingRegisters.Add(addingTag.Name, (addingTag.InnerTag)); } } else if (addingTag.InnerTag.Function == RegisterFunction.InputRegister) { if (!InputRegisters.ContainsKey(addingTag.Name)) { InputRegisters.Add(addingTag.Name, (addingTag.InnerTag)); } } addingTag.TagStatusChanged += (sender, e) => { TagStatusChanged?.Invoke(sender, EventArgs.Empty); }; }