Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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;
        }
Ejemplo n.º 3
0
        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;
        }
Ejemplo n.º 4
0
        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;
        }
Ejemplo n.º 5
0
        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);
        }