Ejemplo n.º 1
0
        /// <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));
        }
Ejemplo n.º 2
0
        private IDependencyResolverPolicy CreateGenericArrayResolverPolicy(Type typeToBuild, ReflectionHelper parameterReflector)
        {
            Type arrayType = parameterReflector.GetClosedParameterType(typeToBuild.GenericTypeArguments);

            return(new NamedTypeDependencyResolverPolicy(arrayType, this.name));
        }
Ejemplo n.º 3
0
 private IDependencyResolverPolicy CreateGenericResolverPolicy(Type typeToBuild, ReflectionHelper parameterReflector)
 {
     return(new NamedTypeDependencyResolverPolicy(
                parameterReflector.GetClosedParameterType(typeToBuild.GetTypeInfo().GenericTypeArguments),
                this.name));
 }