2009-08-09 8 views
0

J'appelle une fonction d'un assembly .NET qui renvoie un byte[].La capture de byte [] renvoie la valeur de GetMethod (methodname) .Invoke

Comment capturer la valeur de retour de cette fonction?

J'ai essayé de faire ce

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

mais je reçois une valeur null retour dans byteData.

Quelqu'un peut-il aider?

+0

Avez-vous débogué cela et vérifié que vous entrez réellement dans la méthode cible? –

Répondre

4

Si elle renvoie réellement un tableau d'octets non nul, cela devrait être absolument correct. Etes-vous sûr qu'il ne remplit pas le tampon que vous avez fourni, au lieu de renvoyer un nouveau tableau d'octets?

Voici une démo de ce travail:

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

Merci Jon .. Oui c'est ce que je pensais .. Je pourrais faire quelque chose d'autre faux .. Je vais faire un peu plus de creuser –

Questions connexes