C# Lambda表达式疑问:GetUserAccessToken方法中handler.text来源问题
C#代码逻辑解答
你疑惑的代码核心是C# Lambda匿名回调的语法特性,具体逻辑如下:
- 首先你看到的
handler => { ... }是C# Lambda匿名函数的简写写法,完整写法等价于(响应类型 handler) => { 逻辑代码 },因为编译器可以根据Send方法的参数定义自动推断handler的类型,所以可以省略类型声明和参数外层的括号。handler是这个匿名函数的形参,不需要你提前在外部定义,它的类型是_restUtil.Send方法要求的成功回调的入参类型,通常是封装了HTTP响应信息的自定义类(比如RestResponse)。 - 你调用
_instance._restUtil.Send时,实际上是给该方法传入了三个参数:- 你构造好的HTTP请求配置对象
builder - 请求成功时触发的回调函数(也就是
handler => { ... }这段逻辑) - 请求失败时触发的回调函数(也就是
restError => { ... }这段逻辑)
- 你构造好的HTTP请求配置对象
handler.text的取值来源:
_restUtil.Send方法内部会完成完整的HTTP请求执行流程:将builder里的配置拼接为合法HTTP请求发往目标接口,拿到服务端返回结果后,会把接口返回的原始字符串内容赋值给响应对象的text属性,再把这个填充完所有响应字段的对象作为实参,调用你传入的成功回调。此时Lambda里拿到的handler就是这个已经填充好数据的响应实例,handler.text就是服务端返回的原始响应报文。
内容的提问来源于stack exchange,提问作者Alex Kalfoglou
相关产品推荐
相关产品推荐

