从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
并自己using
。
别名被编译为它们的别名。 你永远不会知道它是否是源中的string
或String
,坦率地说,我不明白为什么它会重要。
只有15个别名(+ Nullable) 。 只需在这些上使用string.Replace。
在另一篇文章中有一个类型声明的解决方案。 您可以将其扩展为轻松支持类型别名。
本文有一个方法的c#source来实现: http : //www.codeproject.com/Tips/621812/User-friendly-names-for-Types