public void Register(string name, Action action) {
public void Register<A>(string name, Action<A> action) {
public void Register<A, B>(string name, Action<A, B> action) {
public void Register<A, B, C>(string name, Action<A, B, C> action) {
public static void DoAThing(Foo? a = default, Bar? b = default) {}
public static void DoAnotherThing(Foo? a = default, Bar? b = default, Baz? b = default) {}
public static void Main(string[] args) {
var registry = new Registry();
registry.Register("do-a-thing", DoAThing);
registry.Register("do-another-thing", DoAnotherThing);