using System.Collections.Generic; namespace Swan.DependencyInjection { /// /// Resolution settings. /// public class DependencyContainerResolveOptions { /// /// Gets the default options (attempt resolution of unregistered types, fail on named resolution if name not found). /// public static DependencyContainerResolveOptions Default { get; } = new DependencyContainerResolveOptions(); /// /// Gets or sets the unregistered resolution action. /// /// /// The unregistered resolution action. /// public DependencyContainerUnregisteredResolutionAction UnregisteredResolutionAction { get; set; } = DependencyContainerUnregisteredResolutionAction.AttemptResolve; /// /// Gets or sets the named resolution failure action. /// /// /// The named resolution failure action. /// public DependencyContainerNamedResolutionFailureAction NamedResolutionFailureAction { get; set; } = DependencyContainerNamedResolutionFailureAction.Fail; /// /// Gets the constructor parameters. /// /// /// The constructor parameters. /// public Dictionary ConstructorParameters { get; } = new Dictionary(); /// /// Clones this instance. /// /// public DependencyContainerResolveOptions Clone() => new DependencyContainerResolveOptions { NamedResolutionFailureAction = NamedResolutionFailureAction, UnregisteredResolutionAction = UnregisteredResolutionAction, }; } /// /// Defines Resolution actions. /// public enum DependencyContainerUnregisteredResolutionAction { /// /// Attempt to resolve type, even if the type isn't registered. /// /// Registered types/options will always take precedence. /// AttemptResolve, /// /// Fail resolution if type not explicitly registered /// Fail, /// /// Attempt to resolve unregistered type if requested type is generic /// and no registration exists for the specific generic parameters used. /// /// Registered types/options will always take precedence. /// GenericsOnly, } /// /// Enumerates failure actions. /// public enum DependencyContainerNamedResolutionFailureAction { /// /// The attempt unnamed resolution /// AttemptUnnamedResolution, /// /// The fail /// Fail, } /// /// Enumerates duplicate definition actions. /// public enum DependencyContainerDuplicateImplementationAction { /// /// The register single /// RegisterSingle, /// /// The register multiple /// RegisterMultiple, /// /// The fail /// Fail, } }