Пример #1
0
 /// <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;
 }