2016-02-15 7 views
-1

Voici donc mon problème avec une exception TargetInvocationException.MethodInfo.Invoke Throw TargetInvocationException C#

Cette erreur se produit sur une ligne avec un MethodInfo method.Invoke(null, arguments);

Pour votre information, je travaille sur une personne de code fait devant moi, en 2014, il était censé travailler, mais ce n'est pas. Après avoir cherché pendant toute la fin de semaine, je n'ai pas trouvé le problème. N'hésitez pas à me demander plus d'informations sur le code que j'ai, peut-être le problème vient d'ailleurs.

Dans le programme principal, il est ressembler à ceci (il n'y a pas tout le code, certaines parties sont entre ces lignes, mais vous ne les ont pas besoin):

static void Main (string[] args) 
{ 
    [... Code before] 
    object[] arguments = { popup }; 
    MethodInfo method; 
    CodeCompiler cc = new CodeCompiler(); 
    method = cc.CompileCode(fichier, "test", "RequestWeb", "requestW", true, arguments); 

    List<Account> li = (List<Account>)method.Invoke(null, arguments); // TargetInvocationException Here is the error 
} 

Et voici la classe compte:

public class Account 
{ 
    virtual public string libelle { get; set; } 
    virtual public List<AccountStat> listR { get; set; } 

    public Account() 
    { 
     this.listR = new List<AccountStat>(); // This go to another class where List<AccountStat> is defined 
    } 
} 

J'ai essayé de comprendre avec le système InnerException qui me disent:

« l'indice était hors limites Il ne devrait pas être négatif et doit être inférieure à la taille de la collec. paramètre \ r \ nName. StartIndex »

mais je ne comprends toujours pas ce que cela veut dire ... Le problème avec List<Account>?

Merci pour votre aide.

+0

Comme il semble que vous déboguez le code compilé à la volée, je vais supposer que vous n'avez aucune information de débogage. Vous devrez passer en revue manuellement le code compilé dynamiquement pour voir où peut être le 'IndexOutOfRangeException', et utiliser des techniques de débogage old-school pour le réduire (par exemple' Debug.WriteLine' à des endroits utiles). – Luaan

+0

qu'est-ce que vous obtenez à 'method'? –

+0

'CodeCompiler' est une classe abstraite. Comment venez-vous créer une instance de celui-ci? Vous ne ciblez pas l'espace de noms 'System.CodeDom.Compiler'? –

Répondre

0

Après le point par la recherche tout point, je trouve que le erreur était dans la classe requestW où l'erreur "The index was off limits. It should not be negative and must be less than the size of the collection \ r \ nName parameter . StartIndex" était. (Après avoir vérifié tout point par point, il semble que cette erreur renaît à l'intérieur de ma classe où j'essaie de lire un site Internet.)

Dans cette classe , J'ai une partie qui va d'un côté d'un <tbody à l'autre et après décomposition je vois que la valeur StartIndex n'est pas positive mais négative, ce qui jette une exception.

Donc le problème n'était pas dans le List<Account> li = (List<Account>)method.Invoke(null, arguments); lui-même mais dans la classe method étaient mon requestW est appelé et donne l'exception. Merci à tous pour m'avoir aidé à résoudre mon problème :)