これが可能かどうかはわかりませんので、入力/ヘルプをいただければ幸いです。
以下のクラスに次のものがあります(ここではすべてのキャッシュが削除されています):
public static class MasterXMLWeatherClass
{
public static async Task<IEnumerable<XElement>> WorldWeather(string id)
{
XDocument doc = await Task.Run(() => XDocument.Load(string.Format("http://urladdress?key={0}&feedkey={1}&format=xml&q={2}&tp=6&extra=isDayTime", sPartnerID, sLicenseKey, HttpUtility.UrlEncode(id))));
var getAllWeatherData = from weatherData in doc.Descendants("data")
select weatherData;
return getAllWeatherData.AsEnumerable();
}
}
次に、別のクラスに、上記から値を取得する 4 つのメソッドがあります。問題は、すべてで次のエラーが発生することです。
'System.Threading.Tasks.Task>' には 'Descendants' の定義が含まれておらず、タイプ 'System.Threading.Tasks.Task>' の最初の引数を受け入れる拡張メソッド 'Descendants' が見つかりませんでした (ディレクティブまたはアセンブリ参照を使用していますか?)
var doc = MasterXMLWeatherClass.WorldWeather(id);
var displayCurrentConditions = (from wd in doc.Descendants("current_condition")
-これは、エラーをスローするコード行です。
しかし、私が変更した場合:
var doc = MasterXMLWeatherClass.WorldWeather(id);
に
var doc = await Task.Run(()=> MasterXMLWeatherClass.WorldWeather(id));
以下に変更します
public async Task<IEnumerable<DisplayCurrentConditions>> CurrentConditions(string id)
エラーは解消され、インターフェースにエラーが表示されるので、それを変更する必要があります。
最後に、ドメイン層でエラーが発生しませんが、UI 層でエラーが発生します
エラーが発生するだけです。
これを行う別の方法はありますか?
コードの追加
インターフェース
Task<IEnumerable<DisplayCurrentConditions>> CurrentConditions(string id);
UI
public PartialViewResult pvHomePageWeatherDetails(string id)
{
var currentConditions = _IGWC.CurrentConditions(cleanText).FirstOrDefault();
return PartialView();
}