Passing arguments to your slots

This page is part of the magic.signals documentation.

The Node class provides a graph object for you, allowing you to automagically pass in any arguments you wish. Notice, the whole idea is to de-couple your assemblies, hence you shouldn’t really pass in anything but native types, such as for instance System.String, System.DateTime, integers, etc. However, most complex POD structures, can also easily be represented using this Node class.

The Node class is basically a name/value/children graph object, where the value can be any object, the name a string, and children is a list of children Nodes. In such a way, it provides a more C# friendly graph object, kind of resembling JSON, allowing you to internally within your assemblies, pass in a Node object as your parameters from the point of your signal, to the slot where you handle the signal.

The Node POCO class again, is a bi-directional POD instance, allowing you to both pass arguments into the slot, in addition to having the slot return values back to the caller.

If you invoke Signal or SignalAsync from C#, you can optionally pass in a function object that will be executed after the signal has been executed. This is useful for cases where you’re creating an async signal invocation, but not invoking it immediately, and rather returning it as a Task to some other parts of your system, to ensure something occurs after the signal has been executed. Below is an example.

var args = new Node();
return signaler.SignalAsync("foo.bar", args, () => { /* ... This will happen AFTER execution of signal ... */ });


← Active Events or Super Signals internals all of magic.signals