/// <summary> /// Return a <see cref="IDependencyResolverPolicy"/> instance that will /// return this types value for the parameter. /// </summary> /// <param name="typeToBuild">Type that contains the member that needs this parameter. Used /// to resolve open generic parameters.</param> /// <returns>The <see cref="IDependencyResolverPolicy"/>.</returns> public override IDependencyResolverPolicy GetResolverPolicy(Type typeToBuild) { Guard.ArgumentNotNull(typeToBuild, "typeToBuild"); var parameterReflector = new ReflectionHelper(ParameterType); Type typeToResolve = parameterReflector.Type; if (parameterReflector.IsOpenGeneric) { typeToResolve = parameterReflector.GetClosedParameterType(typeToBuild.GenericTypeArguments); } return new OptionalDependencyResolverPolicy(typeToResolve, this.name); }
private IDependencyResolverPolicy CreateGenericResolverPolicy(Type typeToBuild, ReflectionHelper parameterReflector) { return new NamedTypeDependencyResolverPolicy( parameterReflector.GetClosedParameterType(typeToBuild.GenericTypeArguments), this.name); }