Intereting Posts
Селектор свойств Expression <Func >. Как получить / установить значение для выбранного свойства Получить скриншот управления веб-браузером? Каков наилучший тип хранения данных для треугольного массива? Почему кастинг дает CS0030, а «как» работает? цикл для чтения разных типов данных и размеров из очень большого байтового массива из файла Утечка памяти при использовании элемента управления WPF WebBrowser в нескольких windowsх Как я могу сделать невидимую, но нажав кнопку в C # Должен ли я использовать AutoMapper в своих модульных тестах? Как я могу заполнить часть изображения цветом? Найти слова (слова) между двумя значениями в строке Индикатор выполнения и веб-клиент Получите доступ к моему приложению через брандмауэр, используя c # пропускать фотоснимок с одной страницы на другую C # Как перенести кодировку уроков из кода позади, чтобы просмотреть модель wpf Перевести Queryable обратно в IMongoQuery

не содержит определения для ‘GetAwaiter’

Я получаю ошибку ниже с приведенным ниже кодом, это ошибка на линии «alliancelookup», я не уверен, что я делаю неправильно, но сам ничего не видел. Запрос im, выполняющийся на crest, кажется, работает нормально, но похоже, что проблема с империей связана с Awaiter, мне было интересно, есть ли способ обойти это?

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: «System.Dynamic.ExpandoObject» не содержит определения для «GetAwaiter» в CallSite.Target (Closure, CallSite, Object) в System.Dynamic.UpdateDelegates.UpdateAndExecute1 [T0, TRet] (CallSite сайт, T0 arg0) в программе ***. c. d.MoveNext () в C: \ Users — \ Documents \ Visual Studio 2015 \ Projects —— \ Program.cs : строка 95

Невозможно точно знать, что не так, без минимального, полного, проверяемого примера , но похоже, что вы ожидаете чего-то, чего не ожидаете.

Разделение линии alliancelookup :

 // Asynchronously retrieve the alliances. var alliances = await root.GetAsync(r => r.alliances); // Synchronously get the first matching one. var allianceLookup = alliances.First(i => i.shortName == e.GetArg("allianceticker").ToUpper()); 

Может быть, лучший подход, перемещение фильтра в asynchronous код, но это зависит от DynamicCrest .

У вас есть еще один ожидание, чем нужно. Вам нужно только ждать асинхронных методов, но вы также ожидаете результата, который, по-видимому, объявленный тип является dynamic . Вот почему вы не получаете ошибку времени компиляции.

С dynamic он попытается связать метод, который требуется во время выполнения. Этот метод при использовании async – это .GetAwaiter (), поэтому RuntimeBinderException “не содержит определения для GetAwaiter”

Тем не менее, третья строка должна быть:

 var alliancelookup = (await root.GetAsync(r => r.alliances)).First(i => i.shortName == e.GetArg("allianceticker").ToUpper()); 

Хотя расщепление, предложенное Стивеном Клири, является лучшей практикой.

Вы ожидаете вызова asyn, поэтому вам нужно поставить задачу async в начале метода, в котором вы вызываете этот код

 public async Task Name() { 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;