Having the following service constructor
public class Service : IService
{
public Service(IOtherService service1, IAnotherOne service2, string arg)
The expression parameter (x in this case), of the factory delegate is a IServiceProvider.
Use that to resolve the dependencies,
_serviceCollection.AddSingleton(x =>
new Service(x.GetRequiredService(),
x.GetRequiredService(),
""));
The factory delegate is a delayed invocation. When ever the type is to be resolved it will pass the completed provider as the delegate parameter.