WebApi系列~dynamic让你的省了很多临时类

简介:

dynamic这个动态类型早在.net3.5时就已经出现了,当时是伴随的Linq一起让我们认识的,但在使用时总觉得有点别扭,因为它是internal的,所以不能跨程序集使用,这对于分层开发的我们来说显然是不能接受的,所以把dynamic了冷落了很久,应该说是5年吧,哈哈,这几天在睡觉时,突然有个想法,最近在开发SOA时,为了使客户端与服务端有类对应关系,进行序列化,所以总要定义一些DTO,当然你可以把服务端和客户端都引用这个DTO,或者在客户端手动写一个也行,但感觉这两种方式在程序解耦上都不完美,这时我就想起了dynamic,我在序列化时,可不可以用它做中间类型呢?

经过今天的测试,答案是“可以”,这是让我很兴奋的,呵呵

测试代码:

       var url = "http://localhost:24334/api/UserApi";
            var handler = new HttpClientHandler() { AutomaticDecompression = DecompressionMethods.GZip };
            using (var http = new HttpClient(handler))
            {
                //await异步等待回应
                var response = http.GetAsync(url);
                
                //将服务端返回的实体序列化为dynamic动态类
                var obj = JsonConvert.DeserializeObject<dynamic>(response.Result.Content.ReadAsStringAsync().Result);

                //遍历这个动态集合
                foreach (var item in obj)
                {
                    return Content("userName:" + item.UserName);
                }
            }

结果代码:

怎么样,很不错吧,有时候,一个新的技术可能你现在用不上,但知道了总会有好处,没准将来的某一天就会用到!人在学习知识时,没有没用的知识,只是你目前可能用不到它!

本文转自博客园张占岭(仓储大叔)的博客,原文链接:WebApi系列~dynamic让你的省了很多临时类,如需转载请自行联系原博主。

目录
相关文章
|
4天前
|
Kubernetes 负载均衡 网络协议
k8s学习-Service(概念、模板、创建、外部代理、删除等)
k8s学习-Service(概念、模板、创建、外部代理、删除等)
160 0
|
5月前
|
前端开发 小程序 PHP
laravel5.8(四)引入自定义常量文件及公共函数文件
开发过程中,我们一般会用到一些不会改变,或者改变不是很频繁的值,这样的值我们一般将他们定义成常量。 比如网站根目录,或者分页数,或者域名等等。 那我们如何在laravel5.8中引入自定义的常量文件及公共的函数文件呢。 大概有两种方式: 1:框架目录下引入(不推荐) 在框架目录vendor下新建常量文件const.php,以及公共函数文件function.php 在autoload.php文件中引入。 这种方法是可以的,但是不推荐,框架目录下最好都是框架自己的那些文件,正常来说,框架的文件我们在开发过程中,git是不会进行托管的。 2:在app目录下引入 在bootstrap目录下新建常量文件
30 0
|
6月前
|
Web App开发 缓存 前端开发
前端项目根据环境设置请求地址和接口代理,以及解决多个localhost服务token被覆盖
一般开发项目除了正式的生产环境,还会有对应的开发环境、测试环境和预发布环境,每个环境所访问的接口地址肯定不一样,如果自己一个个手动修改那就太不程序猿了
240 1
多model项目下,某个项目引用了公共lib下的service, 其他模块想不受影响的启动解决办法
多model项目下,某个项目引用了公共lib下的service, 其他模块想不受影响的启动解决办法
58 0
|
开发框架 JSON 前端开发
【C#】.net core2.1,自定义全局类对API接口和视图页面产生的异常统一处理
在开发一个网站项目时,异常处理和过滤功能是最基础的模块 本篇文章就来讲讲,如何自定义全局异常类来统一处理
210 0
|
缓存 资源调度
[项目篇]vue3+ts 封装request请求,storage缓存,config请求信息抽离 - 第二天
[项目篇]vue3+ts 封装request请求,storage缓存,config请求信息抽离 - 第二天
【Groovy】MOP 元对象协议与元编程 ( Expando 动态类 | 创建动态类 | 为动态类增加字段和方法 )
【Groovy】MOP 元对象协议与元编程 ( Expando 动态类 | 创建动态类 | 为动态类增加字段和方法 )
156 0
【Groovy】MOP 元对象协议与元编程 ( Expando 动态类 | 创建动态类 | 为动态类增加字段和方法 )
找不到在标准的SAP C4C system字段里新增entry的办法
需求是在Sales order的状态字段里新添加几个entry,代表Sales Order trigger的production order对应的状态, 比如“生产已经开始”,“生产已经结束”。 因为是POC,我采取了最简单的做法,直接把标准的status字段隐藏,然后创建了一个extension field,这个field的类型是一个code list,list里的entry来自标准的status里的entry,再加上两个和production order执行相关的entry。如图:
找不到在标准的SAP C4C system字段里新增entry的办法
SAP Spartacus默认的货币列表currency是从源代码什么地方读取的
SAP Spartacus默认的货币列表currency是从源代码什么地方读取的
110 0
SAP Spartacus默认的货币列表currency是从源代码什么地方读取的