static void Main(string[] args) { var collection = new ServiceCollection(); collection.AddTransient <RegisteredDependency>(_ => new RegisteredDependency { Value = "registered" }); //collection.AddFactory<IFoo, Foo, UnregisteredDependency>(); collection.AddFactory <IFoo, UnregisteredDependency>((prov, dep) => new Foo(prov.GetService <RegisteredDependency>(), dep)); //collection.AddTransient<IFactory<IFoo, UnregisteredDependency>, ManualFactory>(); var provider = collection.BuildServiceProvider(); var factory = provider.GetRequiredFactory <IFoo, UnregisteredDependency>(); var unregistered = new UnregisteredDependency(); unregistered.Value = "unregistered"; var foo = factory.CreateService(unregistered); foo.Print(); Console.ReadLine(); }
public Foo(RegisteredDependency registered, UnregisteredDependency unregistered) { _registered = registered; _unregistered = unregistered; }