如何重新使用这个基于ASP.NET和C#中的最终RestSharp客户端的API客户端?
我是一名新的C#开发人员,我正在尝试重新使用基于ASP.NET和C#中的终极RestSharp客户端构建的API客户端。我能够创建文章中提到的所有类和先决条件,但是我现在无法在应用程序的某些地方使用客户机类 以下是客户端代码:如何重新使用这个基于ASP.NET和C#中的最终RestSharp客户端的API客户端?,c#,restsharp,C#,Restsharp,我是一名新的C#开发人员,我正在尝试重新使用基于ASP.NET和C#中的终极RestSharp客户端构建的API客户端。我能够创建文章中提到的所有类和先决条件,但是我现在无法在应用程序的某些地方使用客户机类 以下是客户端代码: public class UsersClient : BaseClient { public UsersClient (ICacheService cache, IDeserializer serializer, IErrorLogger errorLogger)
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());
}
}
那么我如何访问这个方法呢?或者如何在应用程序上使用API客户端
更新:
我仍然在为这个API客户端而挣扎。您能告诉我如何使用它以及如何应用依赖注入吗?您不能访问这样的非静态方法。首先,必须初始化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);
我建议学习一些设计模式,如依赖注入和控制反转(已经使用过,不确定是有意还是无意),并在这种情况下使用它们。如果您希望通过静态引用访问此方法。您必须进行以下调整。(将单词static添加到GetByID方法中)
公共类用户客户端:BaseClient
{
公共用户客户端(ICacheService缓存、IDeserializer序列化程序、IErrorLogger errorLogger)
:base(缓存、序列化程序、错误记录器,“http://yourBaseUrl.com") { }
公共静态用户GetByID(int-id)
{
RestRequest请求=新的RestRequest(“users/{id}”,Method.GET);
request.AddUrlSegment(“id”,id.ToString());
返回GetFromCache(请求“User”+id.ToString());
}
}
为什么要尝试访问GetById()方法,就好像它是静态的一样?您必须创建一个UsersClientobject@AnthonyLiriano,正如我在问题中提到的,我正在尝试访问此方法,因为我希望在我的应用程序中的不同位置使用它。使用它的最佳实践是什么?感谢您在这方面的帮助。你能给我解释一下使用这种方法的最佳方法吗?如何使用依赖注入和控制反转?@JohnNate通常我提供给你的解决方案是正确的,你应该使用它。无论如何,以一种非常简单的方式,您可以用两种不同的方式调用方法,这取决于您的方法是否是静态的。例如:若方法是静态的,那个么可以像在问题var user=UsersClient.GetById(userId)中一样调用它;若方法是非静态的(在方法定义中并没有“static”关键字),你们必须从中初始化类对象,你们想调用这个方法UsersClient UsersClient=newusersclient(…);var user=usersClient.GetById(userId)@JohnNate关于依赖注入和控制反转你会在网上找到很多教程。非常感谢你的帮助。我仍然对如何初始化ICacheService
,IDeserializer
等的实例感到困惑。当我将它们定义为ICacheService cache=new ICacheService()时,我遇到了错误代码>。你能告诉我怎么做吗?
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);
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());
}
}