예제 #1
0
 private InterfaceImpl(IInterfaceMetadata metadata, Item parent)
 {
     _metadata = metadata;
     Parent = parent;
 }
예제 #2
0
 private InterfaceImpl(IInterfaceMetadata metadata, Item parent)
 {
     _metadata = metadata;
     Parent    = parent;
 }
 public static Interface FromMetadata(IInterfaceMetadata metadata, Object parent)
 {
     return(metadata == null ? null : new InterfaceImpl(metadata, parent));
 }
 private InterfaceImpl(IInterfaceMetadata metadata, Object parent)
 {
     _metadata = metadata;
     Parent    = parent;
 }
예제 #5
0
 private InterfaceImpl(IInterfaceMetadata metadata, Item parent)
 {
     this.metadata = metadata;
     this.Parent = parent;
 }
예제 #6
0
 private InterfaceImpl(IInterfaceMetadata metadata, Item parent)
 {
     this.metadata = metadata;
     this.Parent   = parent;
 }
예제 #7
0
        public static string GetTypeScriptName(ITypeMetadata metadata)
        {
            if (metadata == null)
            {
                return("any");
            }

            if (metadata.IsEnumerable)
            {
                List <ITypeMetadata> typeArguments = metadata.TypeArguments.ToList();

                if (typeArguments.Count == 0)
                {
                    if (metadata.BaseClass != null && metadata.BaseClass.IsGeneric)
                    {
                        typeArguments = metadata.BaseClass.TypeArguments.ToList();
                    }
                    else
                    {
                        IInterfaceMetadata genericInterface = metadata.Interfaces.FirstOrDefault(i => i.IsGeneric);
                        if (genericInterface != null)
                        {
                            typeArguments = genericInterface.TypeArguments.ToList();
                        }
                    }

                    if (typeArguments.Any(t => t.FullName == metadata.FullName))
                    {
                        return("any[]");
                    }
                }

                if (typeArguments.Count == 1)
                {
                    return(GetTypeScriptName(typeArguments.FirstOrDefault()) + "[]");
                }

                if (typeArguments.Count == 2)
                {
                    string key   = GetTypeScriptName(typeArguments[0]);
                    string value = GetTypeScriptName(typeArguments[1]);

                    return(string.Concat("{ [key: ", key, "]: ", value, "; }"));
                }

                return("any[]");
            }

            if (metadata.IsValueTuple)
            {
                string types = string.Join(", ", metadata.TupleElements.Select(p => $"{p.Name}: {GetTypeScriptName(p.Type)}"));
                return($"{{ {types} }}");
            }

            if (metadata.IsGeneric)
            {
                return(metadata.Name + string.Concat("<", string.Join(", ", metadata.TypeArguments.Select(GetTypeScriptName)), ">"));
            }

            string fullName = metadata.IsNullable ? metadata.FullName.TrimEnd('?') : metadata.FullName;

            return(ExtractTypeScriptName(metadata));
        }