public static void Main()
var rules = Rules.Default.WithConcreteTypeDynamicRegistrations(reuse: Reuse.Transient)
.With(Made.Of(FactoryMethod.ConstructorWithResolvableArguments))
.WithDefaultIfAlreadyRegistered(IfAlreadyRegistered.Replace)
.WithFuncAndLazyWithoutRegistration()
.WithTrackingDisposableTransients()
.WithFactorySelector(Rules.SelectLastRegisteredFactory());
var c = new Container(rules);
c.RegisterInstance<string>(null, setup: Setup.With(asResolutionCall: true));
var s = c.Resolve<string>();
var a2 = c.Resolve<A>(new object[] { "Hello World" });
c.RegisterInstance<string>(null);
c.RegisterInstance<string>("Hello New Registration");
c.RegisterDelegate<string>(() => "Hello Another Registration");
Console.WriteLine("Hello s: " + (s ?? "null"));
Console.WriteLine("Hello a.S: " + (a.S ?? "null"));
Console.WriteLine("Hello a2.S: " + (a2.S ?? "null"));
Console.WriteLine("Hello a3.S: " + (a3.S ?? "null"));
Console.WriteLine("Hello a4.S: " + (a4.S ?? "null"));
Console.WriteLine("Hello a5.S: " + (a5.S ?? "null"));