public virtual TsGenericParameter GetTsGenericParameter(NetGenericParameter netGenericParameter) { return(new TsGenericParameter { Name = netGenericParameter.Name, ParameterConstraints = netGenericParameter.ParameterConstraints.Select(GetTsType).ToList(), GenericParameters = netGenericParameter.NetGenericParameters.Select(GetTsGenericParameter).ToList() }); }
/// <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); }
public virtual string WriteGenericParameterName(NetGenericParameter netGenericParameter) { return(netGenericParameter.Name); }
//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}"); }
public string Visit(NetGenericParameter item, bool addDummyGeneric) { return(item.Name); }
public bool Visit(NetGenericParameter type, INetMemberVisibility member) { return(false); }