/// <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.GetGenericArguments());
            }

            return new OptionalDependencyResolverPolicy(typeToResolve, name);
        }
Example #2
0
 private IDependencyResolverPolicy CreateGenericArrayResolverPolicy(Type typeToBuild, ReflectionHelper parameterReflector)
 {
     Type arrayType = parameterReflector.GetClosedParameterType(typeToBuild.GenericTypeArguments);
     return new NamedTypeDependencyResolverPolicy(arrayType, name);
 }
 private IDependencyResolverPolicy CreateGenericResolverPolicy(Type typeToBuild,
     ReflectionHelper parameterReflector)
 {
     return new NamedTypeDependencyResolverPolicy(
         parameterReflector.GetClosedParameterType(typeToBuild.GetGenericArguments()),
         name);
 }