我有几个特殊的方法,我想分析它们在编译的程序集中调用。
例子:
public static class SrcHelper {
[MySpecialMethod]
[Conditional( "DEBUG" )]
public static void ToDo( params object[] info ) {
/* do nothing */
/* this method is not called when code is compiled in RELEASE mode */
}
}
// ... somewhere else in another assembly ...
Array CreateArraySampleMethod( int size ) {
// This call has only informative character. No functionality is required.
SrcHelper.ToDo( "Should create array of ", typeof( MyClass ), " with specified size." );
throw new NotImplementedException();
}
从这个编译的代码中,我想得到参数值{“应该创建具有指定大小的“,MyClass,”数组。” }。我尝试使用 Mono 的 Cecil,并找到了调用“ToDo”方法的说明。但是现在我很困惑如何用参数值来识别指令。
我知道,情况可能很复杂,有些参数的值无法解决。但我只需要解析常量值 - 这足以满足我的目的。
谢谢。
编辑: “ToDo”方法(和类似方法)应用作注释的替代方法( //, /* ... */ ),编译后,应进行 IL 分析并自动生成文档和具体装配的 todo-list .