internal static System.Type GetType(string rootType, System.Type[] typeArgs, string type, int index, ParameterElementCollection parameters)
 {
     if (string.IsNullOrEmpty(type))
     {
         if ((typeArgs != null) && (index < typeArgs.Length))
         {
             return typeArgs[index];
         }
         int num = (typeArgs == null) ? 0 : typeArgs.Length;
         if (num == 0)
         {
             throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgument(System.Runtime.Serialization.SR.GetString("KnownTypeConfigIndexOutOfBoundsZero", new object[] { rootType, num, index }));
         }
         throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgument(System.Runtime.Serialization.SR.GetString("KnownTypeConfigIndexOutOfBounds", new object[] { rootType, num, index }));
     }
     System.Type type2 = System.Type.GetType(type, true);
     if (!type2.IsGenericTypeDefinition)
     {
         return type2;
     }
     if (parameters.Count != type2.GetGenericArguments().Length)
     {
         throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgument(System.Runtime.Serialization.SR.GetString("KnownTypeConfigGenericParamMismatch", new object[] { type, type2.GetGenericArguments().Length, parameters.Count }));
     }
     System.Type[] typeArguments = new System.Type[parameters.Count];
     for (int i = 0; i < typeArguments.Length; i++)
     {
         typeArguments[i] = parameters[i].GetType(rootType, typeArgs);
     }
     return type2.MakeGenericType(typeArguments);
 }
        internal static Type GetType(string rootType, Type[] typeArgs, string type, int index, ParameterElementCollection parameters)
        {
            if (String.IsNullOrEmpty(type))
            {
                if (typeArgs == null || index >= typeArgs.Length)
                {
                    int typeArgsCount = typeArgs == null ? 0 : typeArgs.Length;
                    if (typeArgsCount == 0)
                    {
                        throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperArgument(SR.GetString(SR.KnownTypeConfigIndexOutOfBoundsZero,
                            rootType,
                            typeArgsCount,
                            index));
                    }
                    else
                    {
                        throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperArgument(SR.GetString(SR.KnownTypeConfigIndexOutOfBounds,
                            rootType,
                            typeArgsCount,
                            index));
                    }
                }

                return typeArgs[index];
            }

            Type t = System.Type.GetType(type, true);
            if (t.IsGenericTypeDefinition)
            {
                if (parameters.Count != t.GetGenericArguments().Length)
                    throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperArgument(SR.GetString(SR.KnownTypeConfigGenericParamMismatch,
                        type,
                        t.GetGenericArguments().Length,
                        parameters.Count));

                Type[] types = new Type[parameters.Count];
                for (int i = 0; i < types.Length; ++i)
                {
                    types[i] = parameters[i].GetType(rootType, typeArgs);
                }
                t = t.MakeGenericType(types);
            }
            return t;
        }
 internal static System.Type GetType(string rootType, System.Type[] typeArgs, string type, int index, ParameterElementCollection parameters)
 {
     if (string.IsNullOrEmpty(type))
     {
         if ((typeArgs != null) && (index < typeArgs.Length))
         {
             return(typeArgs[index]);
         }
         int num = (typeArgs == null) ? 0 : typeArgs.Length;
         if (num == 0)
         {
             throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgument(System.Runtime.Serialization.SR.GetString("KnownTypeConfigIndexOutOfBoundsZero", new object[] { rootType, num, index }));
         }
         throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgument(System.Runtime.Serialization.SR.GetString("KnownTypeConfigIndexOutOfBounds", new object[] { rootType, num, index }));
     }
     System.Type type2 = System.Type.GetType(type, true);
     if (!type2.IsGenericTypeDefinition)
     {
         return(type2);
     }
     if (parameters.Count != type2.GetGenericArguments().Length)
     {
         throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgument(System.Runtime.Serialization.SR.GetString("KnownTypeConfigGenericParamMismatch", new object[] { type, type2.GetGenericArguments().Length, parameters.Count }));
     }
     System.Type[] typeArguments = new System.Type[parameters.Count];
     for (int i = 0; i < typeArguments.Length; i++)
     {
         typeArguments[i] = parameters[i].GetType(rootType, typeArgs);
     }
     return(type2.MakeGenericType(typeArguments));
 }
示例#4
0
        internal static Type GetType(string rootType, Type[] typeArgs, string type, int index, ParameterElementCollection parameters)
        {
            if (String.IsNullOrEmpty(type))
            {
                if (typeArgs == null || index >= typeArgs.Length)
                {
                    int typeArgsCount = typeArgs == null ? 0 : typeArgs.Length;
                    if (typeArgsCount == 0)
                    {
                        throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperArgument(SR.GetString(SR.KnownTypeConfigIndexOutOfBoundsZero,
                                                                                                                               rootType,
                                                                                                                               typeArgsCount,
                                                                                                                               index));
                    }
                    else
                    {
                        throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperArgument(SR.GetString(SR.KnownTypeConfigIndexOutOfBounds,
                                                                                                                               rootType,
                                                                                                                               typeArgsCount,
                                                                                                                               index));
                    }
                }

                return(typeArgs[index]);
            }

            Type t = System.Type.GetType(type, true);

            if (t.IsGenericTypeDefinition)
            {
                if (parameters.Count != t.GetGenericArguments().Length)
                {
                    throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperArgument(SR.GetString(SR.KnownTypeConfigGenericParamMismatch,
                                                                                                                           type,
                                                                                                                           t.GetGenericArguments().Length,
                                                                                                                           parameters.Count));
                }

                Type[] types = new Type[parameters.Count];
                for (int i = 0; i < types.Length; ++i)
                {
                    types[i] = parameters[i].GetType(rootType, typeArgs);
                }
                t = t.MakeGenericType(types);
            }
            return(t);
        }