/// <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.GetTypeInfo().GenericTypeArguments); } return(new OptionalDependencyResolverPolicy(typeToResolve, this.name)); }
private IDependencyResolverPolicy CreateGenericArrayResolverPolicy(Type typeToBuild, ReflectionHelper parameterReflector) { Type arrayType = parameterReflector.GetClosedParameterType(typeToBuild.GenericTypeArguments); return(new NamedTypeDependencyResolverPolicy(arrayType, this.name)); }
private IDependencyResolverPolicy CreateGenericResolverPolicy(Type typeToBuild, ReflectionHelper parameterReflector) { return(new NamedTypeDependencyResolverPolicy( parameterReflector.GetClosedParameterType(typeToBuild.GetTypeInfo().GenericTypeArguments), this.name)); }