protected override Task InitialiseInternal(IDependencyResolver dependencyResolver) { dependencyResolver.RegisterType <InMemorySerializer>(Lifetime.Transient); dependencyResolver.RegisterFactory <ITransportConfiguration>(() => new TransportConfiguration(), Lifetime.Transient); dependencyResolver.RegisterFactory <ITranspontDispatcher>(() => { var transport = dependencyResolver.Resolve <InMemoryQueueTransport>(); var manager = dependencyResolver.Resolve <TransportManager>(); var serializer = dependencyResolver.Resolve <IMessageSerialiser>(); var listener = new MessageListener(() => dependencyResolver.Resolve <IHandlerResolver>(), () => dependencyResolver.Resolve <IHandlerInvoker>(), serializer); listener.AttachTo(manager); manager.Initialise(); manager.Start(); return(new TransportDispatcher(manager, serializer)); }, Lifetime.Singleton); return(Task.CompletedTask); }