Exemplo n.º 1
0
 private static TypeUsageInfo GenerateTypeUsageInfo(this Type type, string shortName)
 {
     Contract.Requires(type != null);
     Contract.Requires(!type.IsGenericTypeDefinition);
     #region Array
     if (type.IsArray)
     {
         var arrayRank = type.GetArrayRank();
         type = type.GetElementType();
         return(TypeUsageInfo.CreateArray(type.ToUsageInfo(), arrayRank));
     }
     #endregion
     #region Nullable
     if (type.IsGenericType && type.GetGenericTypeDefinition() == typeof(Nullable <>))
     {
         type = type.GetGenericArguments()[0];
         return(TypeUsageInfo.CreateNullable(type.ToUsageInfo()));
     }
     #endregion
     var typeParameters = type.IsGenericType ? type.GetGenericArguments().Select(ToUsageInfo).ToArray() : null;
     return(CreateTypeUsageInfo(type.IsGenericType ? type.GetGenericTypeDefinition() : type, typeParameters, shortName));
 }