C# dynamic 动态创建 json

  1. using Newtonsoft.Json;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Dynamic;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8.  
  9. namespace AnuoDog.Csharp
  10. {
  11. class StudyJsonNET
  12. {
  13. static void Main(string[] args)
  14. {
  15. dynamic objmatch = new ExpandoObject();
  16.  
  17. Dictionary<string, string> matchKV = new Dictionary<string, string>();
  18. matchKV.Add("name", "jk");
  19. matchKV.Add("age","25");
  20.  
  21. Dictionary<string, string> matchKV2 = new Dictionary<string, string>();
  22. matchKV2.Add("realName", "zs");
  23. matchKV2.Add("realAge", "9");
  24.  
  25. List<dynamic> matchList = new List<dynamic>();
  26. matchList.Add(matchKV);
  27. matchList.Add(matchKV2);
  28.  
  29. objmatch.match = matchList;
  30.  
  31. dynamic obj = new ExpandoObject();
  32. obj.query = objmatch;
  33. obj.page = 5;
  34.  
  35. string json = JsonConvert.SerializeObject(obj);
  36. }
  37. }
  38. }
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C# 中,使用 `dynamic` 关键字可以实现动态编程的功能。通过使用 `dynamic`,可以将变量的类型推迟到运行时进行确定,从而实现一些灵活的编程。 动态生成代码可以通过使用 `System.Reflection.Emit` 命名空间提供的类来实现。这些类允许你在运行时动态地创建和编译代码,并将其加载到当前应用程序域中。 以下是一个使用 `dynamic` 和 `System.Reflection.Emit` 来动态生成一个简单的类的示例: ```csharp using System; using System.Reflection; using System.Reflection.Emit; class Program { static void Main(string[] args) { // 创建一个动态程序集和模块 AssemblyName assemblyName = new AssemblyName("DynamicAssembly"); AssemblyBuilder assemblyBuilder = AppDomain.CurrentDomain.DefineDynamicAssembly( assemblyName, AssemblyBuilderAccess.RunAndSave); ModuleBuilder moduleBuilder = assemblyBuilder.DefineDynamicModule("DynamicModule", "DynamicModule.dll"); // 定义一个名为 MyDynamicClass 的类 TypeBuilder typeBuilder = moduleBuilder.DefineType("MyDynamicClass", TypeAttributes.Public); // 添加一个名为 MyDynamicMethod 的方法 MethodBuilder methodBuilder = typeBuilder.DefineMethod( "MyDynamicMethod", MethodAttributes.Public | MethodAttributes.Static, typeof(void), new Type[] { typeof(string) }); // 向方法中添加代码 ILGenerator il = methodBuilder.GetILGenerator(); il.Emit(OpCodes.Ldstr, "Hello, World!"); il.Emit(OpCodes.Call, typeof(Console).GetMethod("WriteLine", new Type[] { typeof(string) })); il.Emit(OpCodes.Ret); // 完成类的定义 Type myDynamicClass = typeBuilder.CreateType(); // 创建一个实例并调用 MyDynamicMethod 方法 dynamic instance = Activator.CreateInstance(myDynamicClass); instance.MyDynamicMethod("test"); // 保存程序集 assemblyBuilder.Save("DynamicModule.dll"); } } ``` 以上代码会动态创建一个名为 `MyDynamicClass` 的类,并在其中添加一个名为 `MyDynamicMethod` 的方法,在该方法中输出 "Hello, World!"。最后,代码会将程序集保存到当前目录下的 `DynamicModule.dll` 文件中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值