static TypeScriptType MakeHubInterface(Type hubType) { var name = "I" + hubType.Name; var cName = name + "Client"; var declaration = "interface " + name + " {\n"; var count = 0; var sep = ""; var hubAttribute = ""; hubType.GetMethods() .Where(mi => mi.DeclaringType.Name == hubType.Name).ToList() .ForEach(mi => { declaration += " " + CamelCase(mi.Name) + "("; var retTS = DataTypes.GetTypeScriptType(mi.ReturnType); var retType = retTS.Name == "System.Void" ? "void" : "IPromise<" + retTS.Name + ">"; mi.GetParameters().ToList() .ForEach((pi) => { sep = (count != 0 ? ", " : ""); count++; var tst = DataTypes.GetTypeScriptType(pi.ParameterType); declaration += sep + pi.Name + ": " + tst.Name; }); declaration += "): " + retType + ";\n"; count = 0; }); declaration += "}"; hubAttribute = hubType.CustomAttributes .Where(ad => ad.AttributeType.Name == "HubNameAttribute") .Select(ad => ad.ConstructorArguments.FirstOrDefault().Value.ToString()) .FirstOrDefault(); var ret = new TypeScriptType { Name = name, Declaration = declaration }; hubCache.Add(name, ret); hubAliasesCache.Add(name, hubAttribute); clientCache.Add(cName, new TypeScriptType { Name = cName, Declaration = "interface " + cName + " { \n /* Not implemented */ \n}" }); return(ret); }
static TypeScriptType MakeHubInterface(Type hubType) { var name = "I" + hubType.Name; var cName = name + "Client"; var declaration = "interface " + name + " {\n"; var count = 0; var sep = ""; var hubAttribute = ""; hubType.GetMethods() .Where(mi => mi.DeclaringType.Name == hubType.Name).ToList() .ForEach(mi => { declaration += " " + CamelCase(mi.Name) + "("; var retTS = DataTypes.GetTypeScriptType(mi.ReturnType); var retType = retTS.Name == "System.Void" ? "void" : "IPromise<" + retTS.Name + ">"; mi.GetParameters().ToList() .ForEach((pi) => { sep = (count != 0 ? ", " : ""); count++; var tst = DataTypes.GetTypeScriptType(pi.ParameterType); declaration += sep + pi.Name + ": " + tst.Name; }); declaration += "): "+ retType + ";\n"; count = 0; }); declaration += "}"; hubAttribute = hubType.CustomAttributes .Where(ad => ad.AttributeType.Name == "HubNameAttribute") .Select(ad => ad.ConstructorArguments.FirstOrDefault().Value.ToString()) .FirstOrDefault(); var ret = new TypeScriptType { Name = name, Declaration = declaration }; hubCache.Add(name, ret); hubAliasesCache.Add(name, hubAttribute); clientCache.Add(cName, new TypeScriptType { Name = cName, Declaration = "interface " + cName + " { \n /* Not implemented */ \n}" }); return ret; }
static TypeScriptType MakeHubInterface(Type hubType) { var name = "I" + hubType.Name; var cName = name + "Client"; var declaration = "interface " + name + " {\n"; var hubAttribute = ""; hubType.GetMethods() .Where(mi => mi.GetBaseDefinition().DeclaringType.Name == hubType.Name).ToList() .ForEach(mi => { declaration += GetMethodDeclaration(mi); }); declaration += "}"; hubAttribute = hubType.CustomAttributes .Where(ad => ad.AttributeType.Name == "HubNameAttribute") .Select(ad => ad.ConstructorArguments.FirstOrDefault().Value.ToString()) .FirstOrDefault(); var ret = new TypeScriptType { Name = name, Declaration = declaration }; hubCache.Add(name, ret); hubAliasesCache.Add(name, hubAttribute); clientCache.Add(cName, new TypeScriptType { Name = cName, Declaration = GetClientDeclaration(hubType, cName) }); return ret; }
public static TypeScriptType GetTypeScriptType(Type type) { TypeScriptType value; var typeName = type.FullName; if (cache.TryGetValue(typeName, out value)) { return value; } // Nullables.. if (type.FullName.Contains("Nullable")) { value = MakeFromNullable(type); } // Tasks.. else if (type.FullName.Contains("System.Threading.Tasks.Task") || type.GetInterfaces().Any(X => X.FullName.Contains("System.Threading.Tasks.Task"))) { value = MakeFromTask(type); } // Dictionaries -- these should come before IEnumerables, because they also implement IEnumerable else if (type.GetInterfaces().Any(X => X.FullName.Contains("IDictionary"))) { value = MakeDictionary(type); } // Arrays else if (typeName.Contains("[]")) { value = MakeArray(typeof(List<Object>)); } else if (type.GetInterfaces().Any(X => X.FullName.Contains("IList") || X.FullName.Contains("IEnumerable"))) { value = MakeArray(type); } else if (type.GetInterfaces().Any(X => X.FullName.Contains("Tuple"))) { value = MakeTuple(type); } else if (type.IsEnum) { value = MakeEnum(type); } else if (type.IsClass || type.IsInterface) { value = MakeClassOrInterface(type); } else if (type.FullName == "System.Void") { value = new TypeScriptType { Name = "void", Declaration = "" }; } else { Console.WriteLine("Warning:" + type); value = new TypeScriptType { Name = "UNKNOWN TYPE " + type, Declaration = "" }; } cache.Add(type.FullName, value); return value; }
public static TypeScriptType GetTypeScriptType(Type type) { TypeScriptType value; var typeName = type.FullName; if (cache.TryGetValue(typeName, out value)) { return(value); } // Nullables.. if (type.FullName.Contains("Nullable")) { value = MakeFromNullable(type); } // Tasks.. else if (type.FullName.Contains("Task") || type.GetInterfaces().Any(X => X.FullName.Contains("Task"))) { value = MakeFromTask(type); } // Dictionaries -- these should come before IEnumerables, because they also implement IEnumerable else if (type.GetInterfaces().Any(X => X.FullName.Contains("IDictionary"))) { value = MakeDictionary(type); } // Arrays else if (typeName.Contains("[]")) { value = MakeArray(typeof(List <Object>)); } else if (type.GetInterfaces().Any(X => X.FullName.Contains("IList") || X.FullName.Contains("IEnumerable"))) { value = MakeArray(type); } else if (type.GetInterfaces().Any(X => X.FullName.Contains("Tuple"))) { value = MakeTuple(type); } else if (type.IsEnum) { value = MakeEnum(type); } else if (type.IsClass || type.IsInterface) { value = MakeClassOrInterface(type); } else if (type.FullName == "System.Void") { value = new TypeScriptType { Name = "void", Declaration = "" }; } else { Console.WriteLine("Warning:" + type); value = new TypeScriptType { Name = "UNKNOWN TYPE " + type, Declaration = "" }; } cache.Add(type.FullName, value); return(value); }