2009-08-09 48 views
0

我從.NET程序集調用一個返回byte[]的函數。從GetMethod(methodname)獲取byte []返回值.Invoke

如何捕獲該函數的返回值?

我試着這樣做

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

但我得到一個null值回byteData

任何人都可以幫忙嗎?

+0

你這個調試並檢查你真正踏入目標的方法? – 2009-08-09 15:55:35

回答

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

感謝喬恩..是的,這就是我的想法..我可能會做其他的事情..我會做一些更多的挖掘 – 2009-08-09 16:01:50