【问题标题】:Simple.OData.Client in .Net.Net 中的 Simple.OData.Client
【发布时间】:2018-04-18 23:57:14
【问题描述】:

我正在使用将调用 OData 服务的应用程序。我尝试了 Simple.OData.Client,但无法正常工作..

这是我尝试的代码

var client = new ODataClient("http://packages.nuget.org/v1/FeedService.svc/");
var packages = await client.FindEntriesAsync("Packages?$filter=Title eq 'Simple.OData.Client'");
foreach (var package in packages)
{
    Console.WriteLine(package["Title"]);
 }

我收到此错误

错误 1 ​​'await' 运算符只能在异步方法中使用。考虑使用 'async' 修饰符标记此方法并将其返回类型更改为 'Task'。

【问题讨论】:

标签: c#-4.0 odata


【解决方案1】:
using System;
using Simple.OData.Client;

namespace ODataClient
{
    class Program
    {
        static void Main(string[] args)
        {   
            new Manager().GetData();    
            Console.ReadLine();
        }
    }
}


using System;
using System.Collections.Generic;
using System.Threading.Tasks;

namespace ODataClient
{
    public class Manager
    {
        private readonly Simple.OData.Client.ODataClient client;

        public Manager()
        {
            client = new Simple.OData.Client.ODataClient("http://packages.nuget.org/v1/FeedService.svc/");
        }

        public void GetData()
        {
            try
            {
                IEnumerable<IDictionary<string, object>> response = GetPackages().Result;

                foreach (var package in response)
                {
                    Console.WriteLine(package["Title"]);
                }

            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }
        }

        private async Task<IEnumerable<IDictionary<string, object>>> GetPackages()
        {
            var packages = await client.FindEntriesAsync("Packages?$filter=Title eq 'Simple.OData.Client'");    
            return packages;

        }
    }
}

【讨论】:

    【解决方案2】:

    这更简单。我们需要 SimpleQuery 方法,因为我们不能将 async 关键字添加到 Main 或任何入口点方法。

        static async void SimpleQuery()
        {
            var client = new ODataClient("http://blahb...lah.svc/");
            try
            {
                var packages = await client.FindEntriesAsync("Products");
                foreach (var package in packages)
                {
                    Console.WriteLine(package);
                }
            } catch (Exception e)
            {
                Console.WriteLine("Simple Query " + e);
            }
        }
        static void Main(string[] args)
        {
            Console.WriteLine("Press Enter when the job is completed");
            SimpleQuery();
            Console.ReadLine();
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-15
      • 1970-01-01
      • 1970-01-01
      • 2020-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-28
      相关资源
      最近更新 更多