/// <summary>
        /// Zusammenbauen/erstellen des JavaScripProxies
        /// </summary>
        private void BuildJavaScriptProxyFiles(ControllerTypeInformations controllerInfo, IProxyWriter proxyWriter)
        {
            //Wenn keine Methoden übergeben wurden, kann auch keine Proxyklasse erstellt werden
            if (!controllerInfo.MethodTypeInformations.Any())
            {
                return;
            }

            //Den Funktionsnamen/Modulnamen für unser Modul ermitteln, z.B. "HomePSrv"
            string javaScriptSrvName = BuildHelper.GetJavaScriptModuleName(controllerInfo.Controller);

            //Wenn angegeben, den ersten Buchstaben der funktion kleinschreiben
            if (LowerFirstCharInFunctionName)
            {
                javaScriptSrvName = BuildHelper.LowerFirstCharName(javaScriptSrvName);
            }

            StringBuilder builder = new StringBuilder();

            //Beschriftung einfügen das es sich um ein automatisch generiertes Dokument handelt.
            builder.Append(string.Format(AngularProxyJsTemplates.AutomaticlyCreated, DateTime.Now.ToShortDateString(), DateTime.Now.ToLongTimeString(), Environment.UserName));
            builder.Append(Environment.NewLine).Append(Environment.NewLine);

            //unsere Funktionsdefinition zusammenbauen und einfüge, z.B. "function HomePSrv($http, $log) { ..."
            builder.Append(string.Format(AngularProxyJsTemplates.ServerFunctionDefinition, javaScriptSrvName));
            builder.Append(Environment.NewLine).Append(Environment.NewLine);

            //Alle Methoden durchgehen und die entsprechenden Parameter ermitteln und den passenden
            //POST bzw. GET Aufruf zusammenbauen als Prototypefunktion für unsere Funktion.
            foreach (MethodTypeInformations info in controllerInfo.MethodTypeInformations)
            {
                string methodName = info.MethodInfo.Name;

                //Wenn angegeben, den ersten Buchstaben der funktion kleinschreiben
                if (LowerFirstCharInFunctionName)
                {
                    methodName = BuildHelper.LowerFirstCharName(methodName);
                }

                string functionParameters = BuildHelper.GetFunctionParameters(info.MethodInfo);
                string methodCall         = BuildHelper.BuildHttpCall(info, HasSiteRootDefinition);

                //Unseren jeweiligen Methodenaufruf zusammenbauen ob POST oder GET
                string fctCall = string.Format(AngularProxyJsTemplates.BasicSuccessServerCall,
                                               javaScriptSrvName, methodName, functionParameters, methodCall);
                builder.Append(fctCall).Append(Environment.NewLine).Append(Environment.NewLine);
            }

            //Unsere ModulDefinition hinzufügen, z.B. 'angular.module("app.HomePSrv", []).service("HomePSrv", HomePSrv);'
            builder.Append(string.Format(AngularProxyJsTemplates.ModuleDefinition, javaScriptSrvName));

            string proxy = builder.ToString();

            //Die Proxy Dateien ins Dateisystem schreiben
            proxyWriter.SaveProxyContent(proxy, string.Format(@"{0}.js", javaScriptSrvName));
        }
        /// <summary>
        /// Zusammenbauen/erstellen des JavaScripProxies
        /// </summary>
        private void BuildJavaScriptProxyFiles(ControllerTypeInformations controllerInfo, IProxyWriter proxyWriter)
        {
            //Wenn keine Methoden übergeben wurden, kann auch keine Proxyklasse erstellt werden
            if (!controllerInfo.MethodTypeInformations.Any())
            {
                return;
            }

            //Den Funktionsnamen/Modulnamen für unser Modul ermitteln, z.B. "HomePSrv"
            string javaScriptSrvName = BuildHelper.GetJavaScriptModuleName(controllerInfo.Controller);
            string controllerName    = BuildHelper.GetClearControllerName(controllerInfo.Controller).Trim() + "PService";

            //Wenn angegeben, den ersten Buchstaben der funktion kleinschreiben
            if (LowerFirstCharInFunctionName)
            {
                javaScriptSrvName = BuildHelper.LowerFirstCharName(javaScriptSrvName);
            }

            StringBuilder builder = new StringBuilder();

            //Beschriftung einfügen das es sich um ein automatisch generiertes Dokument handelt.
            builder.Append(string.Format(AngularJsProxyTsTemplates.AutomaticlyCreated, DateTime.Now.ToShortDateString(), DateTime.Now.ToLongTimeString(), Environment.UserName));
            builder.Append(Environment.NewLine).Append(Environment.NewLine);

            //Unser GesamtTemplate entsprechend ausfüllen. Beschreibung der Templatewerte:
            //{0}  --> Der Name der Klasse
            //{1}  --> Auflistung der Interface Funktionen für unsere Klasse
            //{2} -->  Auflistung der Service Funktionen die über das Interface eingebunden wurden
            //{3} --> der Name des Service Moduls nach "außen"

            string fct = string.Format(AngularJsProxyTsTemplates.ModuleTemplate,
                                       controllerName,
                                       BuildInterfaceDifinitions(controllerInfo),
                                       BuildfunctionDefinitions(controllerInfo),
                                       javaScriptSrvName);

            builder.Append(fct);
            builder.Append(Environment.NewLine).Append(Environment.NewLine);

            string proxy = builder.ToString();

            //Die Proxy Datei ins Dateisystem schreiben *.ts -> TypeScript
            proxyWriter.SaveProxyContent(proxy, string.Format(@"{0}.ts", javaScriptSrvName));
        }