/// <summary> /// Resolves a generic type. /// </summary> /// <param name="typeName">Name of the type.</param> /// <returns></returns> /// <exception cref="System.TypeLoadException"></exception> protected Type ResolveGeneric(string typeName) { if (typeName.StartsWith(BaseAssemblyInfo.NullableTypeStarter)) { return null; } GenericArguments arguments = new GenericArguments(typeName); Type result = null; try { if (arguments.ContainsArguments) { result = this.Resolve(arguments.TypeName); if (!arguments.IsDefinition) { string[] unresolvedArguments = arguments.GetArguments(); Type[] genericArguments = new Type[unresolvedArguments.Length]; for (int i = 0; i < unresolvedArguments.Length; i++) { genericArguments[i] = this.Resolve(unresolvedArguments[i]); } result = result.MakeGenericType(genericArguments); } } } catch (Exception ex) { if (ex is TypeLoadException) { throw; } throw new TypeLoadException(string.Format("Could not resolve type '{0}'.", typeName), ex); } return result; }