ne contient pas une définition pour 'GetAwaiter'
Im obtenir l'erreur ci-dessous avec la ci-dessous de code, Il est erroring sur le alliancelookup de la ligne, je ne suis pas sûr de ce que je fais mal, mais je ne pouvais rien voir moi-même. La requête im fonctionnant à la crête semble fonctionner très bien, mais Il semble que le problème im est avec le Awaiter, je me demandais si il y avait un moyen de contourner cela?
DynamicCrest crest = new DynamicCrest();
var root = await crest.GetAsync(crest.Host);
var alliancelookup = await (await root.GetAsync(r => r.alliances)).First(i => i.shortName == e.GetArg("allianceticker").ToUpper());
allianceid = alliancelookup.id;
Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: 'Système.Dynamique.ExpandoObject' ne contient pas une définition pour 'GetAwaiter'
au CallSite.Cible(Fermeture , CallSite , Objet )
au Système.Dynamique.UpdateDelegates.UpdateAndExecute1[T0,TRet](CallSite site, T0 arg0)
à ***.Programme.<>c.<b__2_10>d.MoveNext() dans C:\Users---\Documents\Visual Studio 2015\Projets------\Programme.cs:ligne 95
await
n'est pas correctement mise en œuvre, le GetAwaiter
méthode qui est nécessaire pour le bien que ça fonctionne.OriginalL'auteur Kristen Tidmuss | 2016-07-25
Vous devez vous connecter pour publier un commentaire.
Il n'est pas possible de savoir exactement ce qui ne va pas sans un minimale, de manière complète, vérifiable exemple, mais il ne ressemble vous êtes
await
ing quelque chose qui n'est pas destiné à êtreawait
ed.Fractionnement de l'
alliancelookup
ligne:Il y a peut être une meilleure approche, le passage du filtre dans le code asynchrone, mais cela dépend de la
DynamicCrest
.OriginalL'auteur Stephen Cleary
Vous avez plus d'attendre que ce dont vous avez besoin. Vous n'avez qu'à attendre les méthodes asynchrones, mais vous êtes également en attente de la suite, qui, apparemment, type déclaré est
dynamic
. C'est pourquoi vous n'obtenez pas une erreur de compilation.Avec
dynamic
il va essayer de lier la méthode qui a besoin au moment de l'exécution. Cette méthode lors de l'utilisation asynchrone est .GetAwaiter(), ce qui contribue à la RuntimeBinderException "ne contient pas une définition pour 'GetAwaiter'"Cela dit, le troisième ligne devrait être:
Bien que la séparation comme suggéré par Stephen Cleary est une meilleure pratique.
OriginalL'auteur fbiagi
Vous êtes en attente d'un asyn appel de sorte que vous avez à mettre async Tâche au début de la méthode où vous appelez ce code
async
il y aurait une erreur de compilation, pas un moteur d'exécution.OriginalL'auteur Mostafiz