2

我需要能够预处理多个 C# 文件作为项目的预构建步骤,检测方法的开始,并在方法的开始,在任何现有代码之前插入生成的代码。但是,我在检测方法的打开时遇到问题。我最初尝试使用正则表达式进行匹配,但最终误报太多。

我会使用反射,但 MethodInfo 类不引用原始源中的点。

编辑:我在这里真正想做的是支持方法的前置条件,该前置条件代码由方法上的属性确定。我最初的想法是我可以寻找方法的开头,然后插入生成的代码来处理前置条件。

有一个更好的方法吗?如果需要,我愿意创建 Visual Studio 插件。

这是一个 .NET 2.0 项目。

干杯

4

2 回答 2

3

PostSharp 或Mono.Cecil将让您通过更改生成的代码干净地做到这一点,而无需编写 C# 解析器,这不太可能成为您的核心业务......

没有用 PostSharp 做任何有意义的事情,但猜测它比 Mono 更适合实现诸如先决条件或 AOP 之类的东西。或者,您可以使用像Ninject这样的 DI 容器做一些 AOPy

但是当然这个想法的适用性取决于 - 除了你想在方法的开头插入代码之外,你没有说太多......

编辑:鉴于您希望做先决条件...... .net 4中的代码合同肯定是朝这个方向发展的。

你有什么样的工具?交付单个 Mono.Cecil.dll DLL 有什么问题?无论哪种方式,解析器以外的东西都是这项工作的工具。

于 2009-11-11T15:48:44.093 回答
0

我确信有一个更简单的方法,但这可能是一个很好的借口来试一试 Mgrammer

于 2009-11-11T16:01:53.020 回答