Exemple #1
0
 public virtual TsGenericParameter GetTsGenericParameter(NetGenericParameter netGenericParameter)
 {
     return(new TsGenericParameter
     {
         Name = netGenericParameter.Name,
         ParameterConstraints = netGenericParameter.ParameterConstraints.Select(GetTsType).ToList(),
         GenericParameters = netGenericParameter.NetGenericParameters.Select(GetTsGenericParameter).ToList()
     });
 }
Exemple #2
0
            /// <summary>
            /// Resolve a generic parameter.
            /// </summary>
            public NetTypeReference Visit(NetGenericParameter item, int data)
            {
                if ((item.Owner.IsMethod) || (item.Owner == context))
                {
                    // We cannot fix it
                    return(item);
                }

                var contextType = this.context.IsMethod ? ((NetMethodDefinition)this.context).DeclaringType : (NetTypeDefinition)this.context;

                // See if the owner is a direct basetype of the context.
                foreach (var baseType in contextType.GetBaseTypes(false).OfType <NetGenericInstanceType>())
                {
                    if (baseType.GetElementType() != item.Owner)
                    {
                        continue;
                    }

                    if (data > 20)
                    {
                    }

                    // Generic parameter is owned by baseType.
                    // Replace generic parameter with generic argument at the right position
                    var result = baseType.GenericArgument(item.Position);
                    if (result == item)
                    {
                        return(item);
                    }
                    return(result.Accept(this, data + 1));
                }

                // See if the owner is a basetype of the context's base type.
                foreach (var baseType in contextType.GetBaseTypes(false))
                {
                    NetTypeReference resolved;
                    if (TryResolve(item, baseType.GetElementType(), typeNameMap, out resolved))
                    {
                        if (resolved == item)
                        {
                            return(null /*resolved*/);
                        }
                        return(resolved.Accept(this, data));
                    }
                }

                // See if the owner is a declaring type of the context's type.
                foreach (var declaringType in contextType.GetDeclaringTypes())
                {
                    if (declaringType == item.Owner)
                    {
                        return(item);
                    }
                }

                return(null);
            }
Exemple #3
0
 public virtual string WriteGenericParameterName(NetGenericParameter netGenericParameter)
 {
     return(netGenericParameter.Name);
 }
Exemple #4
0
        //TODO: do this
        //public virtual string Write(TsGenericType netGenericType)
        //{
        //    return netGenericType.GenericParameters.Any()
        //        ? $"{netGenericType.Name}<{string.Join(", ", netGenericType.GenericParameters.Select(Write))}>"
        //        : netGenericType.Name;
        //}

        public virtual string WriteGenericParameter(NetGenericParameter netGenericParameter)
        {
            return(netGenericParameter.ParameterConstraints.Any()
                ? $"{netGenericParameter.Name} : {string.Join(", ", netGenericParameter.ParameterConstraints.Select(WriteTypeName))}"
                : $"{netGenericParameter.Name}");
        }
Exemple #5
0
 public string Visit(NetGenericParameter item, bool addDummyGeneric)
 {
     return(item.Name);
 }
Exemple #6
0
 public bool Visit(NetGenericParameter type, INetMemberVisibility member)
 {
     return(false);
 }