/// <summary> /// Das passende HREF Template laden und die passenden TemplateString ersetzten. /// </summary> private string BuildHrefTemplate(ProxyMethodInfos methodInfos, ProxyControllerInfo controllerInfo, string suffix) { var functionTemplate = Factory.GetProxySettings().Templates.First(p => p.TemplateType == TemplateTypes.AngularJsWindowLocationHref).Template; //Den Methodennamen ersetzen - Der Servicename der aufgerufen werden soll. string functionCall = functionTemplate.Replace(ConstValuesTemplates.ControllerFunctionName, ProxyBuilderHelper.GetProxyFunctionName(methodInfos.MethodInfo.Name)); //Parameter des Funktionsaufrufs ersetzen. functionCall = functionCall.Replace(ConstValuesTemplates.ServiceParamters, ProxyBuilderHelper.GetFunctionParameters(methodInfos.MethodInfo)); //Href Call zusammenbauen und Parameter ersetzen functionCall = functionCall.Replace(ConstValuesTemplates.ServiceCallAndParameters, ProxyBuilderHttpCall.BuildHrefLink(methodInfos, ProxyBuilder.AngularJavaScript)); //Den Servicenamen vor dem Prototype ersetzen. functionCall = functionCall.Replace(ConstValuesTemplates.ServiceName, ProxyBuilderHelper.GetServiceName(controllerInfo.ControllerNameWithoutSuffix, suffix, Factory.GetProxySettings().LowerFirstCharInFunctionName)); return functionCall; }
/// <summary> /// Laden aller Methoden und Parameterinformationen in allen Klassen (Controllern) in denen das übergebene ProxyType Attribut verwendet wird. /// </summary> public List<ProxyControllerInfo> LoadProxyControllerInfos(Type proxyTypeAttribute, List<Type> allController) { List<ProxyControllerInfo> proxyControllerInfos = new List<ProxyControllerInfo>(); //Nur die Controller laden in denen auch unser Attribut verwendet wird für das wir die Informationen ermitteln sollen. var typedController = GetProxyControllerByProxyTypeAttribute(proxyTypeAttribute, allController); typedController.ForEach(p => { ProxyControllerInfo proxyControllerInfo = new ProxyControllerInfo(); //Laden der MethodenInformationen zu unserem Controller und nur die Methoden laden bei denen auch das passende Attribut darüber steht. proxyControllerInfo.ProxyMethodInfos = Factory.CreateMethodManager().LoadMethodInfos(p, proxyTypeAttribute); proxyControllerInfo.Controller = p; proxyControllerInfo.ControllerNameWithoutSuffix = Factory.CreateProxyBuilderHelper().GetClearControllerName(p); proxyControllerInfos.Add(proxyControllerInfo); }); return proxyControllerInfos; }