/// <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 } }
private void BaseSignalCallback(IBaseSignal signal, object[] args) { testValue += baseSignalValue; }
protected void StoreInfo(IBaseSignal signal) { type = signal.GetType(); }