using Microsoft.Extensions.DependencyInjection;
public static void Main()
var services = new ServiceCollection();
services.AddSingleton<IConfiguration, Configuration>();
services.AddTransient<GRequestModel.Factory>(serviceProvider =>
(string res, string remip) => new GRequestModel(serviceProvider.GetRequiredService<IConfiguration>(), res, remip));
services.AddTransient<SomeOtherClass>();
var provider = services.BuildServiceProvider();
var testClass = provider.GetRequiredService<SomeOtherClass>();
testClass.ResolveGRequestModel();
public interface IConfiguration
public class Configuration : IConfiguration
public class GRequestModel
public delegate GRequestModel Factory(string res, string remip);
public GRequestModel(IConfiguration configuration, string res, string remip)
Console.WriteLine($"Got {res} and {remip}.");
Console.WriteLine($"Configuration has value?: {configuration != null}");
public class SomeOtherClass
private readonly GRequestModel.Factory _grequestFactory;
public SomeOtherClass(GRequestModel.Factory grequestFactory)
_grequestFactory = grequestFactory;
public void ResolveGRequestModel()
GRequestModel grm = _grequestFactory("resValue", "remipValue");