private SelectedMethod CreateSelectedMethod(MethodInfo method) { var result = new SelectedMethod(method); foreach (ParameterInfo parameter in method.GetParameters()) { result.AddParameterResolver(this.CreateResolver(parameter)); } return(result); }
private SelectedMethod CreateSelectedMethod(IBuilderContext context, IPolicyList resolverPolicyDestination, MethodInfo method) { SelectedMethod result = new SelectedMethod(method); foreach (ParameterInfo parameter in method.GetParameters()) { string key = Guid.NewGuid().ToString(); IDependencyResolverPolicy resolver = CreateResolver(parameter); resolverPolicyDestination.Set <IDependencyResolverPolicy>(resolver, key); DependencyResolverTrackerPolicy.TrackKey(context.PersistentPolicies, context.BuildKey, key); result.AddParameterKey(key); } return(result); }
private IEnumerable <Expression> BuildMethodParameterExpressions(DynamicBuildPlanGenerationContext context, SelectedMethod method, string methodSignature) { int i = 0; var methodParameters = method.Method.GetParameters(); foreach (IDependencyResolverPolicy parameterResolver in method.GetParameterResolvers()) { yield return(context.CreateParameterExpression( parameterResolver, methodParameters[i].ParameterType, Expression.Call(null, SetCurrentOperationToResolvingParameterMethod, Expression.Constant(methodParameters[i].Name, typeof(string)), Expression.Constant(methodSignature), context.ContextParameter))); i++; } }