C#动态类Dynamic的使用

C# 动态类型(Dynamic Type)使用详解:从入门到精通 C#动态类使用指南:从基础到高级实践 C# 4.0引入的动态类型(dynamic)为静态类型语言带来了灵活性,特别适合处理动态数据结构、简化反射操作和COM互操作等场景。本指南全面解析动态类型的使用方法: 核心概念 dynamic关键字将类型检查推迟到运行时 与object类型不同,dynamic无需显式转换 适用于处理JSON/XML、COM互操作等场景 基础用法 动态变量可存储任意类型值 支持动态调用方法和属性 可作方法参数和返回值 阅读详情

Dynamic动态类的出现让C#具有了弱语言类型的特性,编译器在编译的时候不再对类型进行检查。

工作中经常遇到下面的场景,通过请求获取到一个JSON字符串,而我们又对返回的对象类型一无所知或者仅仅想取到其中某字段的值,此时采用dynamic来进行调用非常方便。

代码示例:创建一个控制台应用程序,需要引用Newtonsoft.Json

using System;

namespace DynamicDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            string jsonStr = "{\"name\":\"zhangsan\",\"age\":20}";
            dynamic obj = Newtonsoft.Json.JsonConvert.DeserializeObject(jsonStr);
            Console.WriteLine(obj.name);
            Console.WriteLine(obj.age);
            Console.ReadLine();
        }
    }
}

运行结果:

 

C# - 解析的万金油dynamic dynamic关键字在C#中提供了一种在运行时解析类型的方式,使得代码能够更灵活地处理不确定类型的对象。 阅读详情

相关推荐

C# dynamic 解析Json

https://www.newtonsoft.com/json/help/html/QueryJsonDynamic.htm string json = @"[ { 'Title': 'Json.NET is awesome!', 'Author': { 'Name': 'James Newton-King', 'Twitter': '@JamesNK', 'Picture': '/jamesnk.png' }, 'Date': '20

weixin_43632687的博客 1324

【.net famwork基础之】dynamicDeserializeObject

Dictionary<string, string> dic = new Dictionary<string, string> { { "ml_keywords", EncryptUtils.MD5Encrypt(DateTime.Now.ToString("yyyyMMddHH") + token).ToLower()}, { "action", "makeToken"...

qq_41566366的博客 582

C#中的动态类型(Dynamic)

一、动态类型简介 .NET 4 中引入了动态类型。动态对象(dynamic)使您可以处理诸如 JSON 文档之类的结构内容,这些结构的组成可能要到运行时才能知道【该类型是一种静态类型,但类型为dynamic的对象会跳过静态类型检查。 大多数情况下,该对象就像具有类型object一样。 在编译时,将假定类型化为dynamic的元素支持任何操作。 因此,不必考虑对象是从 COM API、从动态语言(例如 IronPython)、从 HTML 文档对象模型 (DOM)、从反射还是从程序中...

提供C#相关开发 、云计算、运维测试、网络安全相关技术分享与服务,有意向可联系。 1万+

.NET(C#) Json字符串反序列化成dynamic类型对象的方法代码

本文主要介绍.NET(C#)中,将Json字符串反序列化(Deserialize)时,反序列化(Deserialize)成动态类型(dynamic类型)对象的五种方法和代码。

weixin_52026996的博客 3987

C# dynamic 动态创建 json

using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Dynamic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace AnuoDog.Csharp { class StudyJsonNET { static void Main(string[] args) .

高建设的专栏 1161

C#中的动态类dynamic

1,动态类dynamic最常见啊的使用就是在将json字符串接受下来,然后像操作是js操作json一样去处理数据,很轻盈的!废话不多说,上代码! var info = "{\"Account\":\"张三\",\"Pwd\":\"12323\"}"; //json字符串 var infoDynamic = JsonConvert.DeserializeObject<dynamic&g......

积跬步,至千里 7880

C#Dynamic与Json字符串的互相转换

调用: ynamic d = new ExpandoObject(); d.Name = "Tom"; string json = JsonDynamic.ToJson(d);//{"Name":"Tom"} dynamic d2 = JsonDynamic.ToDynamic(json); 注:序列化为Json时仅支持ExpandoOjbect类型,因为ExpandoOjbect派生自IDi

尚晶文的博客 1万+

C# 匿名对象(匿名类型)、var、动态类dynamic

本文是要写的下篇《C#反射及优化用法》的前奏,不能算是下一篇文章的基础的基础吧,有兴趣的朋友请关注一下我的blog,这也有助于提高本人写作的动力。 随着C#的发展,该语言内容不断丰富,开发变得更加方便快捷,C# 的锋利尽显无疑。C# 语言从诞生起就是强类型语言,这一性质到今天不曾改变,我想以后也不会变。既然是强类型语言,那编写任一程序均要求满足下面的基本条件: 1、变量声明必须指明其类型 2、变量类型明确后,其类型在Runtime亦不能改变 代码如下: public class S

dreamgis的专栏 1564

C# 使用Assembly程序集和dynamic动态类型实现动态类实例创建和成员属性值装配

1 通用方法 1.1NewAssembly() 创建动态类程序集。 //创建动态类程序集 public static Assembly NewAssembly(List<string> propertyList){ //创建编译器实例 CSharpCodeProvider provider = new CSharpCodeProvider(); //设置编译参数 CompilerParameters paras = new CompilerParam.

旭东怪的博客 1351

dynamic设计动态类 (C# 4.0)

dynamic介绍: 前言: 最近公司某项目中类型定义不能在编译期间确定,表结构为动态可变类型。有参考C#4.0最新特性,故成此作。 1. dynamic和var dynamicC#4.0新增关键字,和以前动态确定类型的关键字var还是有所不同,以下是区别

学习备忘录 6761

C#笔记---动态类(Dynamic)应用动态添加实体属性

背景:在Coding中有时候会遇到一些需要解析的数据,可是数据的字段数量和名称未统一,我们没法定义实体类来对应。那么我们就会想到通过C#dynamic动态类来实现,如果大家注意的话一些ORM框架里面貌似都有用到dynamic来实现一部分功能。 一.Dynamic的基本应用 1.1 通过.PropertyName来添加属性,和JavaScript的对象差不多.不过对于我们所要解析的数据,我们事先也许根本不知道属性名称,所以用这种方法意义不大. dyna...

雨中深巷的油纸伞 1万+

C# 动态类Dynamic

C# 中,dynamic 关键字是一种重要的类型,允许开发者绕过编译时的类型检查,以便在运行时动态决定类型。这种特性提供了更大的灵活性,尤其在处理动态数据、COM 组件、动态语言接口(DLR)等场合非常有用。dynamic 类型允许变量在运行时被赋予任何数据类型。与 object 类型不同,dynamic 类型的变量在编译时不进行类型检查,而是在运行时解析,从而提供了更大的灵活性。使用 dynamic,你可以调用对象的方法和属性,而不需要在编译时确定它们是否存在。

2401_83367969的博客 4732

c# dynamic动态类型和匿名类

dynamic类型简单示例 dynamic expando = new System.Dynamic.ExpandoObject(); //动态类型字段 可读可写 expando.Id = 1; expando.Name = "Test"; string json = Utils.ConvertJson.JsonEncode(expando); //输出{Id:1,Name...

weixin_30737433的博客 521

Action 参数接收整理, 用 dynamic 类型接收json数据

json转dynamic dynamic dynamicObj = JsonConvert.DeserializeObject<dynamic>(jsondata); var data = dynamicObj.data;//data.msg; int code =dynamicObj.code model转json string json = JsonConvert.S...

无名大白 2000

C#中的DynamicJson操作技术详解

C#编程语言中,dynamic关键字的引入为开发者提供了一种在编译时不需要类型信息就可以访问对象属性和方法的方式。这种技术允许在运行时动态解析成员,极大地增强了语言的灵活性和表达能力。除了标准的异常处理之外,Json.NET还允许开发者自定义异常处理逻辑。例如:// 处理自定义异常逻辑Console.WriteLine($"序列化错误: {args.ErrorContext.Message}");// 可以选择继续抛出异常或处理掉在这个例子中,

weixin_36382073的博客 921

[原创] C# dynamic拼接Json串

using Newtonsoft.Json; 之前拼接两个json串,是用的这样的代码 var tmp = "," + json1.Substring(1, json1.Length - 2); json2 = json2.Insert(json2 - 1, tmp); 虽然效率挺高的,但是代码很丑啊 字符串操作的缺陷: 1)不优雅 2)不通用 3)没有办...

aiji7208的博客 399
上一篇: WPF实现ScrollViewer平滑滚动效果
下一篇: WPF根据窗口内容自动调整窗口大小
RunnerDNA
博客等级 码龄14年 573粉丝 97原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

RunnerDNA

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值