public override void VisitGenericTypeRef(GenericTypeRef x) { VisitElement(x.TargetType); var t = _results.Pop(); if (t.HasValue && !t.Value.IsGeneric) { bool resolved = true; var generics = new GenericQualifiedName[x.GenericParams.Count]; for (int i = 0; i < generics.Length; i++) { VisitElement(x.GenericParams[i]); var g = _results.Pop(); if (g.HasValue) { generics[i] = g.Value; } else { resolved = false; } } if (resolved) { _results.Push(new GenericQualifiedName(t.Value.QualifiedName, generics)); return; } } // _results.Push(null); }
override public void VisitGenericTypeRef(GenericTypeRef x) { _serializer.StartSerialize(typeof(GenericTypeRef).Name, SerializeSpan(x.Span)); SerializeOptionalProperty("TargetType", x.TargetType); if (x.GenericParams != null && x.GenericParams.Count > 0) { _serializer.StartSerialize("GenericParams"); foreach (var param in x.GenericParams) { VisitElement(param); } _serializer.EndSerialize(); } _serializer.EndSerialize(); }
/// <summary> /// Converts a generic variable for display. /// </summary> /// <param name="sb">The current display name for the signiture to append details to.</param> /// <param name="sequence">The sequence number of the current generic variable</param> /// <param name="parameter">The parameter definition information.</param> protected override void ConvertVar(StringBuilder sb, uint sequence, ParamDef parameter) { // Type Generic Parameter GenericTypeRef foundGenericType = null; foreach (GenericTypeRef current in _type.GenericTypes) { if (current.Sequence == sequence) { foundGenericType = current; break; } } if (foundGenericType != null) { sb.Append(foundGenericType.Name); } }
public override void VisitGenericTypeRef(GenericTypeRef x) { throw new NotImplementedException(); }
virtual public void VisitGenericTypeRef(GenericTypeRef x) { VisitElement(x.TargetType); }