Kill() private method

private Kill ( bool detach ) : void
detach bool
return void
Exemplo n.º 1
0
        private void DetachFixin(AbstractFixin fixin, string fixinName)
        {
            if (fixin == null && fixinName == null)
            {
                throw new ArgumentNullException(
                          String.Format(
                              "When detaching a fixin from form '{0}', both parameters " +
                              "('fixin' and 'fixinName') can't be null.", Anonymous ? (object)this : Name));
            }
            if (fixin == null)
            {
                fixin = UpdateFixins.ContainsKey(fixinName) ? UpdateFixins[fixinName]
                  : RenderFixins.ContainsKey(fixinName) ? RenderFixins[fixinName]
                  : null;
                if (fixin == null)
                {
                    return;
                }
            }
            else if (fixinName == null)
            {
                fixinName = fixin.Name;
            }

            var type = fixin.FixinType;

            // There's probably a simpler if statement for this...
            if (type == FixinType.Update && _midUpdateFixins ||
                type == FixinType.Render && _midRenderFixins ||
                type == (FixinType.Update | FixinType.Render) && (_midRenderFixins || _midUpdateFixins))
            {
                _fixinsToRemove.Add(fixinName);
            }
            else
            {
                switch (type)
                {
                case FixinType.Update:
                    UpdateFixins.Remove(fixinName);
                    break;

                case FixinType.Render:
                    RenderFixins.Remove(fixinName);
                    break;

                case FixinType.Update | FixinType.Render:
                    UpdateFixins.Remove(fixinName);
                    RenderFixins.Remove(fixinName);
                    break;
                }
                fixin.Kill(false);
            }
        }