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)); }
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); }