首页 > 编程语言 >C# 通过DynamicObject让Dictionary可以通过dynamic进行操作

C# 通过DynamicObject让Dictionary可以通过dynamic进行操作

时间:2023-08-21 18:33:04浏览次数:42  
标签:Dictionary C# dd dynamic Value dict public

测试代码

            DynamicDictionary dict = new DynamicDictionary();
            dict.Value["ID"] = 1;
            dict.Value["Name"] = "李二";
            dict.Value["Address"] = "李家坡";

            dynamic dd = dict; //结合动态类型,代码很简洁,但是安全性和性能会下降
            dd.ID = 2; //动态类型可以直接点出属性
            dd.Name = "张三";
            dd.Address = "张家村";
            dd.Birthdate = new DateTime(1989, 9, 23);
            dd.Remark = "测试456";
            foreach (var p in dict.Value) {
                Console.WriteLine(p.Key + ":" + p.Value);
            }

DynamicDictionary

    /// <summary>
    /// 继承DynamicObject基类,配合dynamic可以以调用属性的方式使用字典
    /// </summary>
    public class DynamicDictionary : DynamicObject {
        /// <summary>
        /// 原始的字典容器,对外开放,方便一些其他操作
        /// </summary>
        public readonly Dictionary<string, object> Value = new Dictionary<string, object>();
        /// <summary>
        /// 绑定dynamic的取值
        /// </summary>
        public override bool TryGetMember(GetMemberBinder binder, out object result) {
            return Value.TryGetValue(binder.Name, out result);
        }
        /// <summary>
        /// 绑定dynamic的赋值
        /// </summary>
        public override bool TrySetMember(SetMemberBinder binder, object value) {
            Value[binder.Name] = value;
            return true;
        }
    }

 

标签:Dictionary,C#,dd,dynamic,Value,dict,public
From: https://www.cnblogs.com/luludongxu/p/17646773.html

相关文章

  • 8.资产负债表 Balance Sheet
    资产负债表,根据会计恒等式,呈现出资产、负债及所有者权益中的具体项目。对资产和负债进行分类,制作出分类资产负债表ClsssifiedBalanceSheet。0.一个典型的资产负债表预览一.资产1.CurrentAssets流动资产1.1Cash现金1.2AccountsReceivable应收账款1.3Invent......
  • docker使用的核心技术
    1.cgroup,这个用来限制cpu和内存;(通过改配置文件,让pid的cpu和内存限制在配置文件里指定的大小) 2.namespace,这个用来隔离进程/文件系统等等;(unshare-m-u/bin/bash,那么当前session就是在一个namespace里了,在这里修改hostname和加载iso文件,是不会影响宿主机的;注意:不止有-m-u还有......
  • css单行垂直居中,超过两行显示省略号
    HTML:<div><span>单行居中,多行居左单行居中,多行居左</span></div><div><span>单行居中</span></div>CSS:span{font-size:14px;overflow:hidden;text-overflow:-o-ellipsis-lastline;text-overflow:ellipsis;disp......
  • C学习8
    1、递归做阶乘#include<stdio.h>intfunc1(intx){intz=0;while(x>1){inty=x-1;z=x*func1(y);returnz;}}intmain(){inta=0;scanf_s("%d",&a);intret=func1(......
  • IDEA-idea_pycharm等关闭双击shitf和双击ctrl的快捷方式
    IDEA-idea_pycharm等关闭双击shitf和双击ctrl的快捷键解决方法很简单全局搜索,搜索double,或者直接进入Settings>AdvancedSettingsAndroidStudio的话可以点这里:把箭头所示的复选框勾上,然后点击“ok”进行保存。这样就不会和Listary软件默认的快捷键冲突了。......
  • Vulnhub: ICMP: 1靶机
    kali:192.168.111.111靶机:192.168.111.208信息收集端口扫描nmap-A-sC-v-sV-T5-p---script=http-enum192.168.111.20880端口的cms为Monitorr1.7.6m搜索发现该版本的cms存在远程代码执行searchsploitmonitorr漏洞利用nc本地监听,再执行exppython348980.pyh......
  • RISC-V公测平台发布 · 数据库在RISC-V服务器上的适配评估
    前言上一期讲到YCSB在RISC-V服务器上对MySQL进行性能测试(RISC-V公测平台发布·使用YCSB测试SG2042上的MySQL性能),在这一期文章中,我们继续深入讨论RISC-V+数据库的应用。本期就继续利用HS-2平台来测试数据库软件在RISC-V服务器上的兼容性。参与此次实验的数据库如下:RedisMongo......
  • 国外芯片五大玩家联手组建了另一家RISC-V合资企业
    原文链接:https://www.theregister.com/2023/08/04/chip_companies_risc_v/以下是正文InitialdrivestartsinGermany,pushesautomotiveblueprints最初的驱动从德国开始,推动汽车蓝图TheRISC-Vopeninstructionsetarchitecturegotaboosttodayafteritemergedtha......
  • centos7 DHCP服务器配置
    dhcp服务配置过程1、安装包(插入光盘下载或者上一篇的网络下载都可以)安装: 挂载光盘:mount /dev/cdrom /media     cd /media/Packages   rpm -ivh dhcp-4.....(Tab)2、修改主配置文件:vim /etc/dhcp/dhcpd.conf //打开配置文件subnet20.0.0.0netmask255.......
  • 采用增强型 HotRod™封装 LMQ66420MC3RXBRQ1、LMR36503MSC5RPERQ1 汽车类降压转换器
    一、LMQ66420MC3RXBRQ1器件介绍:LMQ66420-Q1是具有集成旁路和自举电容器的业界超小型36V、2A同步直流/直流降压转换器,采用增强型HotRod™QFN封装。该易于使用的转换器支持1V(3.3V)至36V的宽输入电压范围(启动后或运行后),并支持高达42V的瞬态电压。该器件专为满足常开型汽车应......