Skip to main content
 首页 » 编程设计

c#之自定义属性的反射或正则表达式

2024年02月23日36sky-heaven

我看过Attributes and Reflection现在我知道如何创建和使用反射来查看属性的元数据,但是是否有可能制作一个独立的工具来分析 cs 文件并提取使用的属性?

我想做什么?

基本上,我正在开发一种将 C# 代码 作为输入的工具。下一步是查看源代码中使用了哪些属性。提取 Intrinsic 和 Custom Attributes。

问题?

如果您在定义了属性的同一个项目中使用反射,这是有道理的,但是我不知道我应该朝哪个方向移动 编写一个单独的工具,可以为您提供以上提取的静态和属性元数据。

有人说我应该使用 Regex 来提取文件中的属性,而其他人说我需要使用 Irony - .NET Language Implementation Kit

进一步

以上工作将使我拥有一个应用程序,该应用程序将用于源代码中的基于属性(注释)的设计模式恢复。我不太清楚 Regex 是否会拯救我,或者我需要像 Reflection 这样的东西。因为反射是处理运行时的。我不必处理运行时。静态文件分析

请您参考如下方法:

如果我正确理解了您的问题,那么您确实需要解析您的代码。正则表达式不会帮助你,因为除了解析属性你还需要解析类层次结构。反射或许可以解决问题,但您无法向用户显示结果。因此,最好的办法是使用任何解析器从源代码中获取表达式树,然后对其进行调查。

如果您不知道选择哪个解析器 - 我推荐 Rosalyn,因为它应该是解析 C# 代码最简单的(它是专门为它设计的)。您可以在此处找到解析示例: http://blog.filipekberg.se/2011/10/20/using-roslyn-to-parse-c-code-files/

我认为它应该对你的任务非常强大和有用