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

从CLR样式类型的全名获取C#样式类型引用,第1张

概述给定通过反射找到的.NET类型对象,是否可以将此类型打印或反编译为C#声明,同时考虑C#类型别名等? 例如, Int32 -> intString -> string Nullable<Int32> -> int?List<au.net.ExampleObject> -> List<ExampleObject> 我希望能够打印出与源中最初编写的方法相近的方法. 如果.NET框架中没有任何 给定通过反射找到的.NET类型对象,是否可以将此类型打印或反编译为C#声明,同时考虑C#类型别名等?

例如,

Int32 -> intString -> string   Nullable<Int32> -> int?List<au.net.ExampleObject> -> List<ExampleObject>

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

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

解决方法 见 this答案.

例:

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>"

它将帮助你使用int和类似字符的东西,以及泛型,但是你必须得出Nullable< T> – > T’并自己使用.

总结

以上是内存溢出为你收集整理的从CLR样式类型的全名获取C#样式类型引用全部内容,希望文章能够帮你解决从CLR样式类型的全名获取C#样式类型引用所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1263594.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存