gpt4 book ai didi

c# - 为 RestSharp 构建一个用于 CRUD 操作的通用助手

转载 作者:太空狗 更新时间:2023-10-29 23:09:23 26 4
gpt4 key购买 nike

我已经开始使用 RestSharp 来调用 webapi 项目,因为它看起来非常容易使用。

我想为我所有的 crud 操作构建一个辅助类。

到目前为止,我有一个简单的 PUT 请求。

 public static IRestResponse Update(object objectToUpdate,string apiEndPoint)
{
var client = new RestClient(CreateBaseUrl(null))
{
Authenticator = new HttpBasicAuthenticator("user", "Password1")
};
var request = new RestRequest(apiEndPoint, Method.PUT);
request.AddObject(objectToUpdate);
var response = client.Execute<MyViewModel>(request);
//var response = client.ExecuteDynamic(request);
return response;
}

所以上面的代码可以工作,但是我不得不将我的 View 模型硬编码到其中

  var response = client.Execute<MyViewModel>(request);

我怎样才能改变这个,这样我就不需要知道我期望的模型类型了?

我尝试使用 var response = client.ExecuteDynamic(request);然而这会抛出一个异常

Unable to cast object of type 'RestSharp.RestResponse' to type 'RestSharp.RestResponse`1[System.Object

我不确定我应该如何正确地转换我的对象

最佳答案

我不熟悉 RestSharp。但是,听起来泛型可以在这里为您提供帮助。您的类或方法需要接受一个类型。例如,您的方法的签名将更改为

public static IRestResponse Update<T>(object objectToUpdate,string apiEndPoint)

这将允许您调用该方法:

Update<MyViewModel>(objectToUpdate, apiEndPoint);

您的实现将从您的具体类型更改为:

var response = client.Execute<T>(request);

总体而言,您可以将代码修改为如下所示:

 public static IRestResponse Update<T>(object objectToUpdate,string apiEndPoint)
{
var client = new RestClient(CreateBaseUrl(null))
{
Authenticator = new HttpBasicAuthenticator("user", "Password1")
};
var request = new RestRequest(apiEndPoint, Method.PUT);
request.AddObject(objectToUpdate);
var response = client.Execute<T>(request);
//var response = client.ExecuteDynamic(request);
return response;
}

有关 C# 泛型的文档可在此处找到:http://msdn.microsoft.com/en-us/library/ms379564(v=vs.80).aspx

关于c# - 为 RestSharp 构建一个用于 CRUD 操作的通用助手,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12223820/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com