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,
}
}