Ejemplo n.º 1
0
        public static bool IsEqual(this GenericArgumentCollection genArgs1, GenericArgumentCollection genArgs2)
        {
            if (genArgs1 == null && genArgs2 == null)
            {
                return(true);
            }

            if ((genArgs1 == null && genArgs2 != null) ||
                (genArgs1 != null && genArgs2 == null))
            {
                return(false);
            }

            if (genArgs1.Count != genArgs2.Count)
            {
                return(false);
            }

            for (int i = 0; i < genArgs1.Count; i++)
            {
                TypeReference type1 = genArgs1[i];
                TypeReference type2 = genArgs2[i];
                if (!type1.IsEqual(type2))
                {
                    return(false);
                }
            }

            return(true);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// A type reference to a generic contains the concrete types to fully declare it.
        /// Like List&lt;string&gt; where string is an argument to the generic type.
        /// </summary>
        /// <param name="sb"></param>
        /// <param name="coll"></param>
        static void PrintGenericArgumentCollection(StringBuilder sb, GenericArgumentCollection coll)
        {
            if (coll == null || coll.Count == 0)
            {
                return;
            }

            sb.Append("<");
            for (int i = 0; i < coll.Count; i++)
            {
                TypeReference       param   = coll[i];
                GenericInstanceType generic = param as GenericInstanceType;
                if (generic != null)
                {
                    sb.Append(RemoveGenericParameterCountFromName(generic.Name));
                    PrintGenericArgumentCollection(sb, generic.GenericArguments);
                }
                else
                {
                    sb.Append(TypeMapper.FullToShort(param.Name));

                    // Print recursive definition
                    if (i != coll.Count - 1)
                    {
                        sb.Append(",");
                    }
                }
            }
            sb.Append(">");
        }