public void ReusingSingletonMultipleTimesInOneResolveOnceInSingleton()
{
var builder = new ContainerBuilder();
builder.RegisterType<Logger>().As<ILogger>().SingleInstance();
builder.RegisterType<ErrorHandler>().As<IErrorHandler>().SingleInstance();
builder.RegisterType<Database>().As<IDatabase>();
var container = builder.Build();
var obj = container.Resolve<IDatabase>();
Assert.NotNull(obj);
Assert.NotNull(obj.ErrorHandler);
Assert.NotNull(obj.Logger);
Assert.Same(obj.Logger, obj.ErrorHandler.Logger);
var obj2 = container.Resolve<IDatabase>();
Assert.NotNull(obj2);
Assert.NotSame(obj, obj2);
Assert.Same(obj.ErrorHandler, obj2.ErrorHandler);
Assert.Same(obj.Logger, obj2.Logger);
}