如何发出创建代理方法的源代码?

时间:2016-10-15 12:31:02

标签: c#

假设我在字符串中有一些源代码,例如

display_list

我希望发出的源类似于

string source = 
           "var watch = new System.Diagnostics.Stopwatch();
            var stack = new Stack<string>();
            var list = new List<string>() { };
            watch.Start();";
source = Emit(source);

这在一些混淆器中实现,如果我记得被称为代理方法或其他东西,它与内联完全相反。实现这个的正确方法是什么?表达树木? Roslyn或System.Codedom或其他一些库?

1 个答案:

答案 0 :(得分:0)

通常,您没有代码作为字符串,而是作为AST(抽象语法树)构建的类型来自您选择的编译器/代码生成库。

这样的AST可以轻松修改,因为它是一个有组织的数据结构而不是字符串。