/// <param name="source">The given <see cref="IEnumerable{T}"/></param>
/// <param name="source">The given <see cref="IEnumerable{T}"/></param>
/// <param name="predicate">A function to test each element for a condition</param>
/// <param name="predicate">A function to test each element for a condition</param>
/// <returns>The first element of the <see cref="IEnumerable{T}"/> or a new instance of the given <see cref="Type"/> when no element is found</returns>
/// <returns>The first element of the <see cref="IEnumerable{T}"/> or a new instance of the given <see cref="Type"/> when no element is found</returns>
/// An <see cref="Array"/> of parameters that are used to <see cref="IocContainer.Resolve{T}()"/> an instance of this <see cref="IRegistration.InterfaceType"/>
/// An <see cref="Array"/> of parameters that are used to <see cref="IocContainer.Resolve{T}()"/> an instance of this <see cref="IRegistration.InterfaceType"/>
/// <para>Can be set in the <see cref="IIocInstaller"/> by calling <see cref="IWithParameters.WithParameters(object[])"/></para>
/// <para>Can be set in the <see cref="IIocInstaller"/> by calling <see cref="IWithParameters.WithParameters(object[])"/></para>
varinstances=_multitons.FirstOrDefault(m=>m.type==registration.ImplementationType&&m.scope==registration.Scope).instances;//get instances for the given type and scope (use implementation type to resolve the correct instance for multiple multiton registrations as well)
varinstances=_multitons.FirstOrDefault(m=>m.type==registration.ImplementationType&&m.scope==registration.Scope).instances;//get instances for the given type and scope (use implementation type to resolve the correct instance for multiple multiton registrations as well)
<returns>An instance of the given <seecref="T:System.Type"/></returns>
<returns>An instance of the given <seecref="T:System.Type"/></returns>
<exceptioncref="T:LightweightIocContainer.Exceptions.InternalResolveException">Could not find function <seecref="M:LightweightIocContainer.IocContainer.ResolveInternal``1(System.Object[],System.Collections.Generic.List{System.Type})"/></exception>
<exceptioncref="T:LightweightIocContainer.Exceptions.InternalResolveException">Could not find function <seecref="M:LightweightIocContainer.IocContainer.ResolveInternal``1(System.Object[],System.Collections.Generic.List{System.Type})"/></exception>
Recursively resolve a <seecref="T:System.Type"/> with the given parameters for an <seecref="T:LightweightIocContainer.ResolvePlaceholders.InternalToBeResolvedPlaceholder"/>
</summary>
<paramname="toBeResolvedPlaceholder">The <seecref="T:LightweightIocContainer.ResolvePlaceholders.InternalToBeResolvedPlaceholder"/> that includes the type and resolve stack</param>
<paramname="resolveStack">The current resolve stack</param>
<returns>A recursively resolved instance of the given <seecref="T:System.Type"/></returns>
Gets or creates a multiton instance of a given <seecref="T:System.Type"/>
Gets or creates a multiton instance of a given <seecref="T:System.Type"/>
@ -1007,6 +1021,90 @@
<returns>An array of all needed constructor arguments to create the <seecref="T:System.Type"/></returns>
<returns>An array of all needed constructor arguments to create the <seecref="T:System.Type"/></returns>
<exceptioncref="T:LightweightIocContainer.Exceptions.NoMatchingConstructorFoundException">No matching constructor was found for the given or resolvable arguments</exception>
<exceptioncref="T:LightweightIocContainer.Exceptions.NoMatchingConstructorFoundException">No matching constructor was found for the given or resolvable arguments</exception>
Try to get the resolve stack for a given constructor
</summary>
<paramname="constructor">The <seecref="T:System.Reflection.ConstructorInfo"/> for the given constructor</param>
<paramname="arguments">The given arguments</param>
<paramname="resolveStack">The current resolve stack</param>
<returns>
<para>result: True if successful, false if not</para>
<para>parameters: The parameters needed to resolve the given <seecref="T:System.Type"/></para>
<para>exception: A List of <seecref="T:LightweightIocContainer.Exceptions.ConstructorNotMatchingException"/>s if the constructor is not matching</para>
Try to get the sorted constructors for the given <seecref="T:System.Type"/>
</summary>
<paramname="type">The given <seecref="T:System.Type"/></param>
<returns>A list of sorted <seecref="T:System.Reflection.ConstructorInfo"/> for the given <seecref="T:System.Type"/></returns>
<exceptioncref="T:LightweightIocContainer.Exceptions.NoPublicConstructorFoundException">No public constructor was found for the given <seecref="T:System.Type"/></exception>
Get the implementation type for the given <seecref="T:LightweightIocContainer.Interfaces.Registrations.IRegistration"/>
</summary>
<paramname="registration">The given <seecref="T:LightweightIocContainer.Interfaces.Registrations.IRegistration"/></param>
<typeparamname="T">The given <seecref="T:System.Type"/> of the interface</typeparam>
<returns>The implementation <seecref="T:System.Type"/> for the given <seecref="T:LightweightIocContainer.Interfaces.Registrations.IRegistration"/></returns>
Non generic method to get the implementation type for the given <seecref="T:LightweightIocContainer.Interfaces.Registrations.IRegistration"/>
</summary>
<paramname="type">The given <seecref="T:System.Type"/> of the interface</param>
<paramname="registration">The given <seecref="T:LightweightIocContainer.Interfaces.Registrations.IRegistration"/></param>
<returns>The implementation <seecref="T:System.Type"/> for the given <seecref="T:LightweightIocContainer.Interfaces.Registrations.IRegistration"/></returns>
/// A <see cref="List{T}"/> of <see cref="IRegistration"/>s that are registered within this <see cref="MultipleRegistration{TInterface1,TInterface2}"/>
/// A <see cref="List{T}"/> of <see cref="IRegistration"/>s that are registered within this <see cref="MultipleRegistration{TInterface1,TInterface2}"/>
/// An <see cref="Array"/> of parameters that are used to <see cref="IocContainer.Resolve{T}()"/> an instance of this <see cref="IRegistration.InterfaceType"/>
/// An <see cref="Array"/> of parameters that are used to <see cref="IocContainer.Resolve{T}()"/> an instance of this <see cref="IRegistration.InterfaceType"/>
/// <para>Can be set in the <see cref="IIocInstaller"/> by calling <see cref="WithParameters(object[])"/></para>
/// <para>Can be set in the <see cref="IIocInstaller"/> by calling <see cref="WithParameters(object[])"/></para>
/// </summary>
/// </summary>
publicobject[]Parameters{get;privateset;}
publicobject[]?Parameters{get;privateset;}
/// <summary>
/// <summary>
/// The Factory added with the <see cref="WithFactory{TFactory}"/> method
/// The Factory added with the <see cref="WithFactory{TFactory}"/> method
/// </summary>
/// </summary>
publicITypedFactoryFactory{get;privateset;}
publicITypedFactory?Factory{get;privateset;}
/// <summary>
/// <summary>
/// Pass parameters that will be used to <see cref="IocContainer.Resolve{T}()"/> an instance of this <see cref="IRegistration.InterfaceType"/>
/// Pass parameters that will be used to <see cref="IocContainer.Resolve{T}()"/> an instance of this <see cref="IRegistration.InterfaceType"/>