StringBuilder GetNamespace(IType type)
 {
     this.transform.stringBuilder.Clear();
     if (type == null)
     {
         return(this.transform.stringBuilder);
     }
     return(FullNameCreator.NamespaceSB(type, false, this.transform.stringBuilder));
 }
예제 #2
0
        static int AppendTypeNameWithArguments(StringBuilder b, ITypeDefOrRef type, IList <TypeSig> genericArguments)
        {
            if (type == null)
            {
                return(0);
            }
            int outerTypeParameterCount = 0;

            if (type.DeclaringType != null)
            {
                ITypeDefOrRef declType = type.DeclaringType;
                outerTypeParameterCount = AppendTypeNameWithArguments(b, declType, genericArguments);
                b.Append('.');
            }
            else
            {
                int len = b.Length;
                FullNameCreator.NamespaceSB(type, true, b);
                if (len != b.Length)
                {
                    b.Append('.');
                }
            }
            int localTypeParameterCount = 0;

            b.Append(SplitTypeParameterCountFromReflectionName(type.Name, out localTypeParameterCount));

            if (localTypeParameterCount > 0)
            {
                int totalTypeParameterCount = outerTypeParameterCount + localTypeParameterCount;
                b.Append('{');
                for (int i = outerTypeParameterCount; i < totalTypeParameterCount && i < genericArguments.Count; i++)
                {
                    if (i > outerTypeParameterCount)
                    {
                        b.Append(',');
                    }
                    AppendTypeName(b, genericArguments[i]);
                }
                b.Append('}');
            }
            return(outerTypeParameterCount + localTypeParameterCount);
        }