从CLR样式类型的全名获取C#样式类型引用

给定通过reflection找到的.NET类型对象,是否可以将此类型打印或反编译为C#声明,同时考虑C#类型别名等?

例如,

Int32 -> int String -> string Nullable -> int? List -> List 

我希望能够打印出与源中最初编写的方法相近的方法。

如果.NET框架中没有任何内容,是否有第三方库? 我可能会看看ILSpy 。

看到这个答案。

例:

 using System.CodeDom; using System.CodeDom.Compiler; CodeDomProvider provider = CodeDomProvider.CreateProvider("CSharp"); var typeRef = new CodeTypeReference("System.Nullable`1[System.Int32]"); string typeOutput = provider.GetTypeOutput(typeRef); // "System.Nullable" 

它将帮助你使用int和类似string的东西,以及generics,但是你必须得出Nullable -> T? 并自己using

别名被编译为它们的别名。 你永远不会知道它是否是源中的stringString ,坦率地说,我不明白为什么它会重要。

只有15个别名(+ Nullable) 。 只需在这些上使用string.Replace。

在另一篇文章中有一个类型声明的解决方案。 您可以将其扩展为轻松支持类型别名。

本文有一个方法的c#source来实现: http : //www.codeproject.com/Tips/621812/User-friendly-names-for-Types