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.
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
qu'est-ce que vous obtenez à 'method'? –
'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'? –