private void InvokeHandler(Type @interface, IHandlerRegistrar bus, Type executorType)
{
var commandType = @interface.GetGenericArguments()[0];
var registerExecutorMethod = bus
.GetType()
.GetMethods(BindingFlags.Instance | BindingFlags.Public)
.Where(mi => mi.Name == "RegisterHandler")
.Where(mi => mi.IsGenericMethod)
.Where(mi => mi.GetGenericArguments().Count() == 1)
.Single(mi => mi.GetParameters().Count() == 1)
.MakeGenericMethod(commandType);
var del = new Action<dynamic>(x =>
{
dynamic handler = _serviceLocator.GetService(executorType);
handler.Handle(x);
});
registerExecutorMethod.Invoke(bus, new object[] { del });
}