예제 #1
0
        internal override void SetIndex(string name, object value)
        {
            if (TrySet(TypedParameters, name, value, (v, t) => this[t.Item1] = value))
            {
                return;
            }

            var prop = InternalParameters.Where(p => HasName(p, name)).ToList();

            if (prop.Count == 0 && IsLocked())
            {
                throw new InvalidOperationException($"Parameter with name '{name}' does not exist. To add new parameters object must first be unlocked.");
            }

            if (IsSensorTarget(value))
            {
                foreach (var obj in prop)
                {
                    InternalParameters.Remove(obj);
                }

                Add(name, value);
            }
            else
            {
                SetOrAddCustom(prop, name, value);
            }
        }
        internal bool RemoveInternal(string name, bool ignoreUnderscore)
        {
            var toRemove = InternalParameters.Where(p => HasName(p, name, ignoreUnderscore)).ToList();

            if (toRemove.Count == 0)
            {
                return(false);
            }

            foreach (var obj in toRemove)
            {
                InternalParameters.Remove(obj);
            }

            return(true);
        }