Stashbox by Peter Csajtai

<PackageReference Include="Stashbox" Version="3.1.0-preview-542" />

 ContainerConfigurator

public class ContainerConfigurator
Represents a container configurator.
using Stashbox.Lifetime; using Stashbox.Registration.Fluent; using System; using System.Collections.Generic; using System.Reflection; namespace Stashbox.Configuration { public class ContainerConfigurator { public ContainerConfiguration ContainerConfiguration { get; } internal ContainerConfigurator() { ContainerConfiguration = ContainerConfiguration.DefaultContainerConfiguration(); } public ContainerConfigurator WithDisposableTransientTracking() { ContainerConfiguration.TrackTransientsForDisposalEnabled = true; return this; } public ContainerConfigurator WithRegistrationBehavior(Rules.RegistrationBehavior registrationBehavior) { ContainerConfiguration.RegistrationBehavior = registrationBehavior; return this; } public ContainerConfigurator WithRuntimeCircularDependencyTracking() { ContainerConfiguration.RuntimeCircularDependencyTrackingEnabled = true; return this; } public ContainerConfigurator WithCircularDependencyWithLazy() { ContainerConfiguration.CircularDependenciesWithLazyEnabled = true; return this; } public ContainerConfigurator WithDefaultValueInjection() { ContainerConfiguration.DefaultValueInjectionEnabled = true; return this; } public ContainerConfigurator WithUnknownTypeResolution(Action<UnknownRegistrationConfigurator> configurator = null) { ContainerConfiguration.UnknownTypeResolutionEnabled = true; ContainerConfiguration.UnknownTypeConfigurator = configurator; return this; } public ContainerConfigurator WithAutoMemberInjection(Rules.AutoMemberInjectionRules rule = Rules.AutoMemberInjectionRules.PropertiesWithPublicSetter, Func<MemberInfo, bool> filter = null) { ContainerConfiguration.MemberInjectionWithoutAnnotationEnabled = true; ContainerConfiguration.MemberInjectionWithoutAnnotationRule = rule; ContainerConfiguration.MemberInjectionFilter = filter; return this; } public ContainerConfigurator WithConstructorSelectionRule(Func<IEnumerable<ConstructorInfo>, IEnumerable<ConstructorInfo>> selectionRule) { ContainerConfiguration.ConstructorSelectionRule = selectionRule; return this; } public ContainerConfigurator OnContainerConfigurationChanged(Action<ContainerConfiguration> configurationChanged) { ContainerConfiguration.ConfigurationChangedEvent = configurationChanged; return this; } public ContainerConfigurator TreatParameterAndMemberNameAsDependencyName() { ContainerConfiguration.TreatingParameterAndMemberNameAsDependencyNameEnabled = true; return this; } public ContainerConfigurator WithNamedDependencyResolutionForUnNamedRequests() { ContainerConfiguration.NamedDependencyResolutionForUnNamedRequestsEnabled = true; return this; } public ContainerConfigurator WithMicrosoftExpressionCompiler() { ContainerConfiguration.ForceUseMicrosoftExpressionCompiler = true; return this; } public ContainerConfigurator WithDefaultLifetime(LifetimeDescriptor lifetime) { ContainerConfiguration.DefaultLifetime = lifetime; return this; } public ContainerConfigurator WithLifetimeValidation() { ContainerConfiguration.LifetimeValidationEnabled = true; return this; } } }