class FooService
{}
FooService foo = new FooService();
IServiceContainer sc = new ServiceContainer();
sc.AddService(typeof(FooService), foo);
// how do we add a second FooService?
TypeAlias lonalias = new TypeAlias(typeof(FooService), "lon");
TypeAlias nycalias = new TypeAlias(typeof(FooService), "nyc");
FooService lonfoo = new FooService();
FooService nycfoo = new FooService();
sc.AddService(lonalias, lonfoo);
sc.AddService(nycalias, nycfoo);
bool b1 = (sc.GetService(lonalias) == lonfoo); // true
bool b2 = (sc.GetService(nycalias) == nycfoo); // true
bool b3 = typeof(FooService).IsAssignableFrom(lonalias); // true
bool b4 = lonalias.IsSubclassOf(typeof(FooService)); // true