Run() or Execute() method. The reason for the "laziness" of the factory is that executing one of these commands may fail (TryExecute()). This command is then skipped (the failure may be logged) and tried again later, at which point it may no longer fail.MakeFoo<T>, MakeBar<T>, and MakeQux.FooBase take an instance of IFoo as a sort-of parent. This can be nested infinitely. Let's assume something like this;