检查C#Action / Lambda / Delegate包含任何代码/语句

时间:2009-09-30 05:11:25

标签: c# reflection delegates lambda

有人能告诉我是否有办法查看某个动作是否包含任何代码?

Action x = new Action(()=>
             {

             });

应该返回false,而

Action x = new Action(()=>
             {
                var x = "i am a string" 
             });

应该返回true。

也许使用反射?

1 个答案:

答案 0 :(得分:7)

也许这会有所帮助:

        Action x = new Action(() =>
        {
            var xx = "i am a string";
        });


        Action x1 = new Action(() =>
        {

        });

        MethodBody mb = x.Method.GetMethodBody();
        MethodBody mb1 = x1.Method.GetMethodBody();

        byte[] b = mb.GetILAsByteArray();
        byte[] b1 = mb1.GetILAsByteArray();

b1(空方法体)只有2个字节,值0和42表示 nop 返回,我认为。