Est-il possible d'obtenir le nom du paramètre (où j'ai parmName ci-dessous)? Ou peut-être dans le code MSIL il n'y a que des positions relatives, pas de noms de paramètres absolus?.NET Réflexion de tous les paramètres de la méthode
J'ai un cas inhabituel utilisant HIP dans Microsoft Host Integration Server. Lorsque les champs sont NULL et l'erreur retourne à CICS (sur le mainframe), l'erreur est "A CALL TO VERIFYINVOKEPARAMS FAILED". J'ai codé en dur une solution, mais essayait de faire une solution générale qui fonctionnerait pour n'importe quel sous-programme HIP.
Merci,
Neal Walters
// check for null values in any of the parameters
MethodBase method = MethodBase.GetCurrentMethod();
//string key = method.Name + "(";
for (int i = 0; i < method.GetParameters().Length; i++)
{
if (method.GetParameters().GetValue(i).GetType() == typeof(String))
{
if (method.GetParameters().GetValue(i) == null)
{
string parmName = " Parm #" + i;
msg = "Value of return variable " + parmName + " is null (should be blanks)";
System.Diagnostics.EventLog.WriteEntry("LOGGER", msg,
System.Diagnostics.EventLogEntryType.Error);
}
}
}
Extra info: J'appelle un Orch BizTalk publié en tant que service Web WCF. Quand il y a des erreurs, certains champs ne sont pas reliés en série au programme ci-dessus. C'est ainsi que les valeurs sont devenues NULL en premier lieu. Mais l'application CICS/qui appelle mon programme HIS/HIP n'aime pas les valeurs nulles.
Désolé d'architecte fauteuil, mais je vois ce que vous essayez de faire là-bas, et je ne suis pas sûr que cela tombe sous le domaine des meilleures pratiques ... mais je peux me tromper. il est probablement préférable de faire juste! = null vérifie et lance ArgumentNullExceptions, puis gère la journalisation dans votre gestionnaire d'exceptions. Au moins, c'est la norme que j'ai vue. * shrug * –
Dans ce cas, il peut être préférable d'ignorer les valeurs nulles. A quoi bon lancer l'exception? Il devrait changer le code d'appel qui pourrait être beaucoup. – ChaosPandion
En raison de la nature de HIS/HIP, j'ai 26 paramètres, chacun passé par réf, représentant une structure COBOL. C'est beaucoup de déclarations if, et nous devrions le faire à nouveau dans un futur programme HIP. HIP a traduit les champs .NET aux formats COBOL correspondants (PIC S9 (4) COMP etc ...) – NealWalters