public IControllerActionReference CreateActionReference(ICodeGeneratorServices services, Type controllerType, string areaName, string controllerName, string actionName, MethodSignature signature, params ActionArgument[] arguments) { return new ControllerActionReference(services, controllerType, areaName, controllerName, actionName, signature, arguments); }
public ControllerActionReference(ICodeGeneratorServices services, Type controllerType, string areaName, string controllerName, string actionName, MethodSignature signature, params ActionArgument[] arguments) : base(services, controllerType, areaName, controllerName, actionName) { Arguments = arguments; ActionMethodSignature = signature; }
public MethodInformation ResolveMethodInformation(MethodSignature signature) { MethodInformation returned; @lock.AcquireReaderLock(-1); if (methods.ContainsKey(signature.Type)) if (methods[signature.Type].ContainsKey(signature)) { returned = methods[signature.Type][signature]; @lock.ReleaseLock(); return returned; } @lock.UpgradeToWriterLock(-1); if (!methods.ContainsKey(signature.Type)) methods[signature.Type] = new Dictionary<MethodSignature, MethodInformation>(); var method = signature.Type.GetMethod( signature.Name, BindingFlags.Public | BindingFlags.Instance, null, signature.Types, new ParameterModifier[0]); if (method == null) { @lock.ReleaseLock(); throw new MissingMethodException( String.Format("Missing method: '{0}' on '{1}'", signature.Name, signature.Type.FullName)); } returned = new MethodInformation(method, GetParameters(method), method.GetCustomAttributes(true)); methods[signature.Type][signature] = returned; @lock.ReleaseLock(); return returned; }
public bool ConvertArgument(MethodSignature signature, ActionArgument argument, IDictionary parameters) { parameters.Add(argument.Name, argument.Value); return true; }