C# 从GetMethod(methodname)捕获字节[]返回值。调用

C# 从GetMethod(methodname)捕获字节[]返回值。调用,c#,reflection,C#,Reflection,我正在从.NET程序集调用一个函数,该程序集返回一个字节[] 如何捕获该函数的返回值 我试过这么做 byte[] byteData = (byte[])obj.GetType().GetMethod("methodname").Invoke(obj, new object[] { buffer }); 但是我在byteData中得到了一个null值 有人能帮忙吗?如果它真的返回一个非空字节数组,那应该是绝对好的 您确定它没有填充您提供的缓冲区,而是返回一个新的字节数组吗 下面是它工作的演示:

我正在从.NET程序集调用一个函数,该程序集返回一个
字节[]

如何捕获该函数的返回值

我试过这么做

byte[] byteData = (byte[])obj.GetType().GetMethod("methodname").Invoke(obj, new object[] { buffer });
但是我在
byteData
中得到了一个
null


有人能帮忙吗?

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

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

下面是它工作的演示:

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
    }
}

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

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

下面是它工作的演示:

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
    }
}

你是否调试过并检查过你是否真的进入了目标方法?你是否调试过并检查过你是否真的进入了目标方法?谢谢Jon。。是的,我就是这么想的。。我可能做错了别的事。。我会再挖一点谢谢Jon。。是的,我就是这么想的。。我可能做错了别的事。。我会再挖一点