我想解析一个c#文件,唯一需要的是确定它是否包含具有特定名称的属性;只需简单的true/false响应。或者更确切地说,由于我在每次运行时都要检查多个属性,提取属性名称列表可能会很有帮助。
我认为可以使用CodeDomProvider功能(f#示例)创建一个优雅的解决方案:
很遗憾,
编辑: 我将用它来进行自动代码生成。基本上,我将在文件 xyz.partial.cs 中生成一个部分类。这将生成一个框架属性。但是,如果我想要更改属性的实现,我将剪切该属性并将其粘贴到手工编写的 xyz.cs 文件中。重新创建生成的类时,我希望它跳过生成我已移动到手工编写文件中的属性。 因此,反射不可行,因为反射会告诉我该属性确实存在,但不会告诉我它是在哪个文件中定义的。
我认为可以使用CodeDomProvider功能(f#示例)创建一个优雅的解决方案:
use reader = new StreamReader(existingFile)
let codeProvider = new CSharpCodeProvider()
let codeUnit = codeProvider.Parse(reader)
很遗憾,
CSharpCodeProvider
没有实现 Parse
函数。是否有一种方法可以从源文件获取 CodeCompileUnit
?或者有其他更优雅的方法吗?(我希望避免在此使用正则表达式)。编辑: 我将用它来进行自动代码生成。基本上,我将在文件 xyz.partial.cs 中生成一个部分类。这将生成一个框架属性。但是,如果我想要更改属性的实现,我将剪切该属性并将其粘贴到手工编写的 xyz.cs 文件中。重新创建生成的类时,我希望它跳过生成我已移动到手工编写文件中的属性。 因此,反射不可行,因为反射会告诉我该属性确实存在,但不会告诉我它是在哪个文件中定义的。