public static AxVariable Create(int linkId, string name)
        {
            var v    = new AxVariable();
            var iErr = v.Initialize(linkId, name);

            return(v);
        }
        private void AddVariavle(int id, Enums.LinkType type, string name)
        {
            if (string.IsNullOrEmpty(name))
            {
                return;
            }

            switch (type)
            {
            case Enums.LinkType.Linear:
                _variables.Add(name, AxVariable.Create(id, name));
                break;

            case Enums.LinkType.TwoPos:
            case Enums.LinkType.WriteTwoPos:
            case Enums.LinkType.PulseTwoPos:

                var baseName = BitSetVariable.GetBaseName(name, out int idx);

                if (_variables.TryGetValue(baseName, out Variable var))
                {
                    (var as BitSetVariable).AddBit(id, idx);
                }
                else
                {
                    _variables.Add(baseName, BitSetVariable.Create(id, baseName, idx));
                }
                break;

            default:
                throw new ArgumentException("Invalid link type!");
            }
        }