namespace Unosquare.Swan.Components { using System.Collections.Generic; /// /// 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 DependencyContainerUnregisteredResolutionActions UnregisteredResolutionAction { get; set; } = DependencyContainerUnregisteredResolutionActions.AttemptResolve; /// /// Gets or sets the named resolution failure action. /// /// /// The named resolution failure action. /// public DependencyContainerNamedResolutionFailureActions NamedResolutionFailureAction { get; set; } = DependencyContainerNamedResolutionFailureActions.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 DependencyContainerUnregisteredResolutionActions { /// /// 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 DependencyContainerNamedResolutionFailureActions { /// /// The attempt unnamed resolution /// AttemptUnnamedResolution, /// /// The fail /// Fail, } /// /// Enumerates duplicate definition actions. /// public enum DependencyContainerDuplicateImplementationActions { /// /// The register single /// RegisterSingle, /// /// The register multiple /// RegisterMultiple, /// /// The fail /// Fail, } }