/// <summary>Unbind by Signal Instance</summary>
 /// <param name="key">Instance of IBaseSignal</param>
 override public void Unbind(object key, object name)
 {
     if (bindings.ContainsKey(key))
     {
         IBaseSignal signal = (IBaseSignal)key;
         signal.RemoveListener(ReactTo);
     }
     base.Unbind(key, name);
 }
        protected override ICommand invokeCommand(Type cmd, ICommandBinding binding, object data, int depth)
        {
            IBaseSignal signal  = (IBaseSignal)binding.key;
            ICommand    command = createCommandForSignal(cmd, data, signal.GetTypes());          //Special signal-only command creation

            command.sequenceId = depth;
            trackCommand(command, binding);
            executeCommand(command);
            return(command);
        }
        override public void ResolveBinding(IBinding binding, object key)
        {
            base.ResolveBinding(binding, key);

            if (bindings.ContainsKey(key))             //If this key already exists, don't bind this again
            {
                IBaseSignal signal = (IBaseSignal)key;
                signal.AddListener(ReactTo);                 //Do normal bits, then assign the commandlistener to be reactTo
            }
        }
 override public void OnRemove()
 {
     foreach (object key in bindings.Keys)
     {
         IBaseSignal signal = (IBaseSignal)key;
         if (signal != null)
         {
             signal.RemoveListener(ReactTo);
         }
     }
 }
        override public ICommandBinding Bind(object value)
        {
            IInjectionBinding binding = injectionBinder.GetBinding(value);
            IBaseSignal       signal  = null;

            if (value is Type)
            {
                if (binding == null)                 //If this isn't injected yet, inject a new one as a singleton
                {
                    binding = injectionBinder.Bind(value) as IInjectionBinding;
                    binding.ToSingleton();
                }
                signal = injectionBinder.GetInstance(value as Type) as IBaseSignal;
            }
            return(base.Bind(signal ?? value));
        }
        protected override ICommand invokeCommand(Type cmd, ICommandBinding binding, object data, int depth)
        {
            if (depth != 0)
            {
                return(base.invokeCommand(cmd, binding, data, depth));
            }

            if (binding.key is IBaseSignal)
            {
                IBaseSignal signal  = (IBaseSignal)binding.key;
                ICommand    command = createSignalCommand(cmd, data, signal.GetTypes()); //Special signal-only command creation
                command.sequenceId = depth;
                trackCommand(command, binding);
                executeCommand(command);
                return(command);
            }
            else
            {
                return(base.invokeCommand(cmd, binding, data, depth)); // Not sure
            }
        }
示例#7
0
 private void BaseSignalCallback(IBaseSignal signal, object[] args)
 {
     testValue += baseSignalValue;
 }
 protected void StoreInfo(IBaseSignal signal)
 {
     type = signal.GetType();
 }
示例#9
0
		private void BaseSignalCallback(IBaseSignal signal, object[] args)
		{
			testValue += baseSignalValue;
		}