Registering and resolving services

Services are registered in a ServiceRepository and resolved by a ServiceProvider

var repo = new ServiceRepository();

repo.Register<Service1>();
repo.Register<Service2>();

var provider = repo.CreateServiceProvider();

var svc1 = provider.Resolve<Service1>();
var svc2 = provider.Resolve<Service2>();