.NET 8与RestSharp升级后RestResponse初始化报错如何解决?
解决RestSharp最新版本中RestResponse实例化报错问题
问题根源
RestSharp适配.NET8的最新版本调整了RestResponse<T>的构造逻辑,不再允许无参实例化,必须传入对应的RestRequest对象作为必填参数,这就是你遇到“没有与RestResponse所需参数request对应的实参”报错的原因。
修复代码
直接在实例化RestResponse<T>时传入RestRequest参数即可,结合你的mock场景,有两种常见写法:
写法1:提前构造mock请求
var response = new RestResponse<T>(It.IsAny<RestRequest>()) { StatusCode = statusCode, Data = dataResult, RawBytes = rawBytesResult }; mockClient.Setup(x => x.CallHttpClient<T>(It.IsAny<RestRequest>())).Returns(Task.FromResult(response));
写法2:在Returns中关联请求参数(更贴合mock逻辑)
mockClient.Setup(x => x.CallHttpClient<T>(It.IsAny<RestRequest>())) .Returns((RestRequest request) => Task.FromResult(new RestResponse<T>(request) { StatusCode = statusCode, Data = dataResult, RawBytes = rawBytesResult }));
说明
新版本RestSharp要求响应对象必须和请求对象绑定,以此强化请求与响应的关联关系,这是框架的设计变更,所以所有实例化RestResponse或RestResponse<T>的代码都需要调整为带RestRequest参数的构造方式。
内容的提问来源于stack exchange,提问作者Mukesh
相关产品推荐
相关产品推荐

