Stashbox by Peter Csajtai

<PackageReference Include="Stashbox" Version="3.2.1" />

 FluentServiceConfigurator<TService, TImplementation, TConfigurator>

public class FluentServiceConfigurator<TService, TImplementation, TConfigurator> : FluentServiceConfigurator<TConfigurator> where TConfigurator : FluentServiceConfigurator<TService, TImplementation, TConfigurator>
Represents the generic fluent service registration api.
public TConfigurator InjectMember<TResult>(Expression<Func<TImplementation, TResult>> expression, object dependencyName = null)

Set a member (property / field) as a dependency should be filled by the container.

public TConfigurator WithFactory(Func<TService> singleFactory, bool isCompiledLambda = false)

Sets a parameter-less factory delegate for the registration.

public TConfigurator WithFactory(Func<IDependencyResolver, TService> containerFactory, bool isCompiledLambda = false)

Sets a container factory delegate for the registration.

public TConfigurator WithFinalizer(Action<TImplementation> finalizer)

Sets a delegate which will be called when the container is being disposed.

public TConfigurator WithInitializer(Action<TImplementation, IDependencyResolver> initializer)

Sets a delegate which will be called when the service is being constructed.

public TConfigurator WithInstance(TService instance, bool wireUp = false)

Sets an instance as the resolution target of the registration.