如何重用这个基于ASP.NET和C#中的Ultimate RestSharp客户端的API客户端?

时间:2018-04-18 12:44:12

标签: c# restsharp

我是一名新的C#开发人员,我正在尝试重新使用我基于ASP.NET中的 Ultimate RestSharp客户端和C# 构建的API客户端in this post。我能够创建文章中提到的所有类和先决条件,但我现在无法在我的应用程序中的某些地方使用客户端类

这是客户端代码:

public class UsersClient : BaseClient
{
    public UsersClient (ICacheService cache, IDeserializer serializer, IErrorLogger errorLogger)
        : base(cache, serializer, errorLogger, "http://yourBaseUrl.com") { }

    public User GetByID(int id)
    {
        RestRequest request = new RestRequest("users/{id}", Method.GET);
        request.AddUrlSegment("id", id.ToString());
        return GetFromCache<User>(request, "User" + id.ToString());
    }

}

现在,当我尝试在某些ASP.NET页面的代码隐藏中调用GetById方法时,我看不到或访问此方法,我不知道为什么。这是我用来访问方法的代码行:

string userId = "JohnA";
var user = UsersClient.GetById(userId);

那我怎么能访问这个方法呢?或者如何在我的应用程序上使用API​​客户端?

更新

我仍然在努力使用这个API客户端。你能否告诉我如何使用它以及如何应用依赖注入?

2 个答案:

答案 0 :(得分:1)

您不能像这样访问非静态方法。首先,您必须初始化UsersClient对象。

ICacheService cache = //initialize cache here
IDeserializer deserializer = //initialize deserializer here
IErrorLogger errorLogger = //initialize errorLogger here
UsersClient usersClient = new UsersClient(cache, deserializer, errorLogger); 

string userId = "JohnA"; 
var user = usersClient.GetById(userId);

我建议学习设计模式,如依赖注入和控制反转(已经使用过,不确定它是否有意或无意识地使用),并在这种情况下使用它们。

答案 1 :(得分:0)

如果您希望通过静态参考访问此方法。您必须在下面进行调整。 (将单词static添加到GetByID方法中)。

public class UsersClient : BaseClient
{
    public UsersClient (ICacheService cache, IDeserializer serializer, IErrorLogger errorLogger)
        : base(cache, serializer, errorLogger, "http://yourBaseUrl.com") { }

    public static User GetByID(int id)
    {
        RestRequest request = new RestRequest("users/{id}", Method.GET);
        request.AddUrlSegment("id", id.ToString());
        return GetFromCache<User>(request, "User" + id.ToString());
    }

}