我需要能够预处理多个 C# 文件作为项目的预构建步骤,检测方法的开始,并在方法的开始处(任何现有代码之前)插入生成的代码。但是,我在检测方法的打开时遇到问题。我最初尝试使用正则表达式进行匹配,但最终出现了太多误报。
我会使用反射,但 MethodInfo 类不会引用原始源中的点。
编辑:我在这里真正想做的是支持方法的前置条件,前置条件代码由方法的属性确定。我最初的想法是,我可以查找方法的开头,然后插入生成的代码来处理先决条件。
有更好的方法吗?如果需要的话,我愿意创建 Visual Studio Addin。
这是一个 .NET 2.0 项目。
干杯
最佳答案
PostSharp 或 Mono.Cecil会让你这样做cleanly通过更改生成的代码而不编写 C# 解析器,这不太可能成为您的核心业务...
还没有使用 PostSharp 做过任何重要的事情,但猜测它比 Mono 更适合实现先决条件或 AOP 之类的东西。或者,您可以使用 DI 容器执行 AOPy 操作,如 Ninject
但是当然这个想法的适用性取决于 - 除了你想在方法的开头插入代码之外你没有说太多......
编辑:根据您希望做的先决条件... Code Contracts in .net 4肯定是在那个方向。
你有什么工具?只提供一个 Mono.Cecil.dll DLL 有什么问题吗?无论哪种方式,解析器以外的工具都是完成这项工作的工具。
关于c# - 预处理 C# - 检测方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1716040/