Пример #1
0
            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);
            }
Пример #2
0
 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();
 }
Пример #3
0
        /// <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);
            }
        }
Пример #4
0
 public override void VisitGenericTypeRef(GenericTypeRef x)
 {
     throw new NotImplementedException();
 }
Пример #5
0
 virtual public void VisitGenericTypeRef(GenericTypeRef x)
 {
     VisitElement(x.TargetType);
 }