从GetMethod(methodname).Invoke捕获byte []返回值

时间:2009-08-09 15:45:39

标签: c# reflection

我从.NET程序集中调用一个函数,它返回byte[]

如何捕获该函数的返回值?

我试过这个

byte[] byteData = (byte[])obj.GetType().GetMethod("methodname").Invoke(obj, new object[] { buffer });

但我在null中得到byteData值。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:4)

如果它真的返回一个非空字节数组,那应该是绝对正常的。

你确定它没有填充你提供的缓冲区,而不是返回一个新的字节数组吗?

以下是它的工作演示:

using System;

class Test
{
    public byte[] GiveMeBytes()
    {
        return new byte[2];
    }

    static void Main()
    {
        object obj = new Test();
        byte[] byteData = (byte[])obj.GetType().GetMethod("GiveMeBytes")
                                     .Invoke(obj, new object[0]);
        Console.WriteLine(byteData.Length); // Prints 2
    }
}