Mega Code Archive

 
Categories / C# / Network
 

Get Type As Html

using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Reflection; using System.Text; namespace RestCake.Util {     internal static class ReflectionHelper     {         /// <summary>         /// This is used for the services "_help" pages, for generating documentation on service APIs.         /// It shouldn't be used for generating code, because the types may not always include their fully qualified names, and may not compile.         /// </summary>         /// <param name="type"></param>         /// <param name="nsBefore">A string to put before the namespace</param>         /// <param name="nsAfter">A string to put after the namespace</param>         /// <returns></returns>         public static string GetTypeAsHtml(Type type, string nsBefore = "<span class='namespace'>", string nsAfter = "</span>")         {             if (type.IsGenericParameter)                 return type.Name;             if (type.FullName != null && type.FullName.StartsWith("System.Nullable`1"))                 return GetTypeAsHtml(type.GetGenericArguments()[0], nsBefore, nsAfter) + "?";             if (!type.IsGenericType)             {                 if (type.Namespace == "System")                 {                     switch (type.Name)                     {                         case "Double":                         case "String":                         case "SByte":                         case "Byte":                         case "Char":                         case "Decimal":                         case "Object":                         case "Void":                             return type.Name.ToLower();                         case "Boolean":                             return "bool";                         case "UInt16":                             return "ushort";                         case "UInt32":                             return "uint";                         case "UInt64":                             return "ulong";                         case "Int16":                             return "short";                         case "Int32":                             return "int";                         case "Int64":                             return "long";                         case "Single":                             return "float";                         default: return type.Name;                     }                 }                 return nsBefore + type.Namespace + "." + nsAfter + type.Name;             }             var sb = new StringBuilder();             var name = type.Name;             var index = name.IndexOf("`");             if (type.Namespace == "System")                 sb.AppendFormat("{0}", name.Substring(0, index));             else                 sb.AppendFormat("{0}{1}", nsBefore + type.Namespace + "." + nsAfter, name.Substring(0, index));             sb.Append("&lt;");             var first = true;             foreach (var arg in type.GetGenericArguments())             {                 if (!first)                     sb.Append(',');                 sb.Append(GetTypeAsHtml(arg, nsBefore, nsAfter));                 first = false;             }             sb.Append("&gt;");             return sb.ToString();         }     } }