C# RestClient的适配器?
我是设计模式的新手,我正在尝试使用C# RestClient的适配器?,c#,adapter,.net-core,restsharp,dotnet-httpclient,C#,Adapter,.net Core,Restsharp,Dotnet Httpclient,我是设计模式的新手,我正在尝试使用.NET标准为提供应用程序/json的服务编写REST客户端库。 但是,RestSharp还不支持.NET标准(github上有一个未解决的问题) 为了将来能够使用它,并遵循“编程到接口,而不是实现”的原则,我将创建一个公共接口(IRestClient),它将封装所需的功能:Execute()和ExecuteAsync()方法。 my library主类的构造函数将有两个重载: 首先,接受IRestClient接口。调用应用程序必须为其实现适配器(即使它使用的是
.NET标准
为提供应用程序/json的服务编写REST客户端库。但是,
RestSharp
还不支持.NET标准
(github上有一个未解决的问题)
为了将来能够使用它,并遵循“编程到接口,而不是实现”的原则,我将创建一个公共接口(IRestClient
),它将封装所需的功能:Execute()
和ExecuteAsync()
方法。my library主类的构造函数将有两个重载:
IRestClient
接口。调用应用程序必须为其实现适配器(即使它使用的是RestSharp
库)HttpClient
的实现RestClient
依赖于IRestRequest
和IRestResponse
,对于HttpClient
来说,它是HttpRequestMessage
和HttpResponseMessage
)。这些依赖项具有其他依赖项,依此类推。有没有一种方法可以为这些方法创建一个公共接口,而无需重新编写所有依赖接口?HttpClient在.NET Core中可用。只需添加
System.Net.Http
包。它已经可以使用Json了。您希望将所有内容复制为接口,然后重新实现它有什么好处?通过抽象HttpClient,您试图解决什么实际问题?这不是问题。这是一个假设,您可能必须更改库下的客户机,并且不必重写大量代码。模式是针对特定问题的解决方案,它们不能“以防万一”应用。设计模式的简短定义是在*context*
中解决*problem*。此外,是什么让您认为您现在为一个库创建的接口在尝试使用另一个库时会起作用?例如,HttpClient没有阻塞方法,因为程序不必阻塞等待响应。为什么要使用Execute()
?为什么Execute
,您只是向另一方发送请求server@ssooqua这正是我的观点。HTTP不执行任何操作。当实际操作发送请求时,为什么要使用Execute
?这只是其他库中不同的一件事。创建这样一个抽象的最佳时间是在尝试添加第二个库时。只有这样,您才能看到什么是抽象,什么不是抽象。