在运行时将IL代码转换为C#

时间:2011-07-10 07:41:35

标签: c# il

是否有免费库允许在运行时将IL代码转换为C#?

谢谢, 基督教

修改

以下是我的例子:

在我的程序中,在某些时候我有一个字符串列表,类似于某个程序集中的类的IL代码:

// =============== CLASS MEMBERS DECLARATION ===================

.class public auto ansi beforefieldinit Probant.Arithmetics
       extends [mscorlib]System.Object
{
  .method public hidebysig instance int32 
          Sum(int32 a,
              int32 b) cil managed
  {
    // Code size       11 (0xb)
    .maxstack  2
    .locals init ([0] int32 result,
             [1] int32 CS$1$0000)
    IL_0000:  nop
    IL_0001:  ldarg.1
    IL_0002:  ldarg.2
    IL_0003:  add
    IL_0004:  stloc.0
    IL_0005:  ldloc.0
    IL_0006:  stloc.1
    IL_0007:  br.s       IL_0009

    IL_0009:  ldloc.1
    IL_000a:  ret

现在有了这个字符串数组(每个字符串一行),我想以某种方式生成相应的C#代码。

是否有人知道这是否可以通过 ILSpy

实现

2 个答案:

答案 0 :(得分:0)

ILSpy使用Mono.Cecil读取输入程序集,然后使用Cecils中间表示。

如果您将IL作为文本而不是二进制文件,则必须找到可以将文本组装成汇编或至少组装到Cecils表示中的内容。

答案 1 :(得分:0)

据我所知:

public int Sum(int a, int b)
{
    int result,CS$1$0000;
    result = a + b;
    CS$1$0000 = result;

    return CS$1$0000;
}