Conversion C# en VB - Code imcompréhensible.

agecanonixxx Messages postés 2 Date d'inscription mardi 10 mai 2011 Statut Membre Dernière intervention 10 mai 2011 - 10 mai 2011 à 10:12
agecanonixxx Messages postés 2 Date d'inscription mardi 10 mai 2011 Statut Membre Dernière intervention 10 mai 2011 - 10 mai 2011 à 17:13
Bonjour,
J'ai récupéré un code en C# que je voulais convertir en VB mais 2 lignes de code sont pour moi incompréhensible . Quelqu'un saurait-il me dire ce que font les lignes que voici :

[i]Func<ResultExecutedContext> continuation = () =>
{
Invoke(actionResult);
return new ClsResult(ctrl, actionResult, false, null );
};

Func<ClsResult> Result = filters.Reverse().Aggregate(continuation,
(next, filter) => () => InvokeFilter(filter, preContext, next));/i

et peut-être une idée du code VB corresponsant .

J'ai mis, après, un peu plus de code pour la compréhension.
Merci.

protected virtual ClsResult InvokeAction(ICtrol ctrl, IList filters, IActionResult actionResult)
{
ClsResultContext preContext = new ClsResultContext(ctrol, actionResult);

Func<ResultExecutedContext> continuation ()>
{
    Invoke(actionResult);
    return new ClsResult(ctrl, actionResult, false, null );
};

Func<ClsResult> Result = filters.Reverse().Aggregate(continuation,
    (next, filter) => () => InvokeFilter(filter, preContext, next));
return Result();
}


private ClsResult InvokeFilter(IResultFilter filter, ClsResultContext preContext, Func<ClsResult> continuation)
{
//Execution du filtre
filter.OnResultExecuting(preContext);

//Si l'execution est annulée
if (preContext.Cancel)
{
    return new ClsResult(preContext.Controller, preContext.Result, true , null );
}
bool wasError = false;
ClsResult postContext = null;
try
{
    postContext = continuation();
}
catch (Exception ex)
{
    wasError = true;
    postContext = new ClsResult(preContext.Controller, preContext.Result, false, ex);

    filter.OnResultExecuted(postContext);

    if (!postContext.ExceptionHandled)
    {
        throw;
    }
}

if (!wasError)
{
    filter.OnResultExecuted(postContext);
}
return postContext;
}

private void Invoke(IActionResult actionResult)
{
actionResult.ExecuteResult(this);
}

2 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
10 mai 2011 à 13:23
Salut

As-tu essayé la conversion avec <cet utilitaire>

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
agecanonixxx Messages postés 2 Date d'inscription mardi 10 mai 2011 Statut Membre Dernière intervention 10 mai 2011
10 mai 2011 à 17:13
Bonjour,

Oui, merci. Mais j'ai une erreur

[i]Erreur rencontrée par le parseur: Line 5 col 47: invalid PrimaryExpr

== ClsResultContext preContext = new ClsResultContext(ctrol, actionResult);
==
>> Func<ResultExecutedContext> continuation = () =>
== {
== Invoke(actionResult);/i

J'ai même essayer en compilant le code et en décompilant avec Reflector en VB, alors là, le code VB c'est du "chinois", et de plus si je fais un copier/coller de ce code dans VS, rien n'ai bon.
0
Rejoignez-nous