Ayons une fonction:déclaration de fonction de type
Func<argsFoo, resultFoo> foo= x=>new resultFoo(x);
Func<argsBar, resultBar> bar= x=>new resultBar(x);
Func<argsBaz, resultBaz> baz= x=>new resultBaz(x);
Je veux créer une fonction complexe qui utilise toutes ces fonctions mentionnées ci-dessus.
Comme ceci:
Func
<
Func<argsFoo, resultFoo>,
Func<argsBar, resultBar>,
Func<argsBaz,resultBaz>,
fooBarBazResult
> fooBarBaz=...
Le point est une telle déclaration est en train de tuer la lisibilité du Programme. L'inférence de type ne fonctionne pas dans ce cas.
Question: Puis-je utiliser quelque chose comme ça?
FooBarBaz<typeof(foo),typeof(bar)>,typeof(baz)>>
J'ai essayé et la réponse est non. Peut-être que quelqu'un a une autre solution pour raccourcir les déclarations de fonction composées?
Cela semble étrange. Le dernier paramètre générique d'un 'Func' est le type de retour. Vous avez trois Funcs avec trois types de retour différents et encore, vous essayez de les combiner avec un Func qui prend le premier à en entrée et retourne un Func qui ressemble à la troisième? Qu'est-ce que vous essayez vraiment de faire ici? –
Pas lié à ce que vous demandez mais le lambda '(x) => {return newFool (x);}' (point-virgule manquant dans votre code!) Peut être simplifié un peu, 'x => new resultFoo (x) '. –
Daniel tu as raison je devrais corriger l'erreur dans l'exemple. –