Stashbox by Peter Csajtai

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

 ContainerConfiguration

public class ContainerConfiguration
Represents a container configuration
using Stashbox.Lifetime; using Stashbox.Registration.Fluent; using System; using System.Collections.Generic; using System.Linq.Expressions; using System.Reflection; namespace Stashbox.Configuration { public class ContainerConfiguration { public bool TrackTransientsForDisposalEnabled { get; set; } public Rules.RegistrationBehavior RegistrationBehavior { get; set; } public bool RuntimeCircularDependencyTrackingEnabled { get; set; } public bool DefaultValueInjectionEnabled { get; set; } public bool UnknownTypeResolutionEnabled { get; set; } public bool AutoMemberInjectionEnabled { get; set; } public bool CircularDependenciesWithLazyEnabled { get; set; } public bool TreatingParameterAndMemberNameAsDependencyNameEnabled { get; set; } public bool NamedDependencyResolutionForUnNamedRequestsEnabled { get; set; } public bool ReBuildSingletonsInChildContainerEnabled { get; set; } public Rules.AutoMemberInjectionRules AutoMemberInjectionRule { get; set; } public Func<IEnumerable<ConstructorInfo>, IEnumerable<ConstructorInfo>> ConstructorSelectionRule { get; set; } public Action<UnknownRegistrationConfigurator> UnknownTypeConfigurator { get; set; } public Action<ContainerConfiguration> ConfigurationChangedEvent { get; set; } public Func<MemberInfo, bool> AutoMemberInjectionFilter { get; set; } public LifetimeDescriptor DefaultLifetime { get; set; } public bool LifetimeValidationEnabled { get; set; } public Func<LambdaExpression, Delegate> ExternalExpressionCompiler { get; set; } internal static ContainerConfiguration DefaultContainerConfiguration() { return new ContainerConfiguration { ConstructorSelectionRule = Rules.ConstructorSelection.PreferMostParameters, DefaultLifetime = Lifetimes.Transient }; } private ContainerConfiguration() { } internal ContainerConfiguration Clone() { return (ContainerConfiguration)MemberwiseClone(); } } }