新建类Product:

class Product
{public string name;public int Id { get; set; }public void ShowProduct(){Console.WriteLine("Id={0} ,Name={1}", Id, name);}
}

Main方法代码如下:

static void Main(string[] args)
{//dynamic对象dynamic dynProduct = new Product();//设置name字段dynProduct.name = "n1";//设置Id属性dynProduct.Id = 1;dynProduct.Id = dynProduct.Id + 3;//调用ShowProduct方法dynProduct.ShowProduct();Console.ReadLine();
}

输出如下:

修改dynProduct.Id=”1”,此时"1”是字符串

运行:

因为product的Id属性是int型

修改dynProduct.ShowProducT(); 运行:

因为product 包含ShowProduct 的方法,但是并没有包含ShowProducT的方法,

所以dynamic不支持大小写不同。根本原因是因为C#也不支持。

修改Product中name的修饰符:将Public改为private:

private string name;

再次运行代码:

因为name是private,外部无法访问。。。

但是反射好像是可以的啊?

那么尝试下反射吧:

Type productType = typeof(Product);
Product p = new Product();FieldInfo fi = productType.GetField("name",BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly);
fi.SetValue(p, "通过反射设置的值");

运行,结果如下:

因为在某些安全限制条件下,是不运行读取和设置私有字段的,例如在silverlight中。所以微软大概出于对这一点的考虑,所以dynamic不支持私有字段的读取和设置吧,以上纯属个人猜想。

浅谈Dynamic 关键字系列之二:调用属性,方法,字段相关推荐

  1. 浅谈Dynamic 关键字系列之三(下):ExpandoObject,DynamicObject,DynamicMetaObject

    接上文:浅谈Dynamic关键字系列之三(上) 为什么TryXXX方法没有被调用?? 将DynamicProduct 中的name修饰符改为private: private string name; ...

  2. 浅谈语音信号处理系列之二 语音信号处理的基础

    下面简单扼要的总结几个基本概念,如果想深入了解请告诉我或者直接参考相关文献. 一 语音信号的产生 一般来说,声音是通过振动产生的.同样,语音是肺里面的空气形成气流通过声道,再从口 鼻辐射而产生的.语音 ...

  3. 浅谈ARM Cortex-M系列架构——架构篇

    浅谈ARM Cortex-M系列架构文章 浅谈ARM Cortex-M系列架构--指令集 目录 前言 1.操作状态 2.操作模式 二.寄存器 1.通用目的寄存器 2.R13,栈指针(SP) 3.R14 ...

  4. 袁萌浅谈C919大飞机(二)

    袁萌浅谈C919大飞机(二) 2015年11月2日,C919大飞机从生产线上下来.从此,C919大飞机的机体算是诞生了.至于这个大家伙会不会"飞"起来,当时人们还不知道. 人们的预 ...

  5. 单一修改高程值lisp_浅谈AutoCAD中修改高程的四种方法

    浅谈 AutoCAD 中修改高程的四种方法 摘 要: 在使用 AutoCAD 进行数字化成图工作中,经常遇到线划的标高不为零,及高程点的值与实地不符,需要对其进行修改等情况,结合实 际工作经验,简单介 ...

  6. php layer弹出层更改背景,浅谈layer弹出层按钮颜色修改方法

    layer弹出层有多种格式的弹出,使用方法也不细述. 在弹出确认框可使用confirm或open方式 在open中 layer.open({ content: '确认提交?', btn: [" ...

  7. java执行jar中的main_浅谈java 执行jar包中的main方法

    浅谈java 执行jar包中的main方法 通过 OneJar 或 Maven 打包后 jar 文件,用命令: java -jar ****.jar 执行后总是运行指定的主方法,如果 jar 中有多个 ...

  8. laytpl语法_浅谈laytpl 模板空值显示null的解决方法及简单的js表达式

    浅谈laytpl 模板空值显示null的解决方法及简单的js表达式 laytpl 模板语法 {{ d.field }} 输出一个普通字段,不转义html 官方的说明 但d.field 为空时会显示nu ...

  9. android 系统升级 方法,安卓系统怎么升级 浅谈安卓系统更新升级的几种方法

    最近有网友问小编"安卓系统怎么升级?",针对该问题,笔者也在网上查找了下相关资料,不过并没有找到什么有价值的相关介绍,多数都是介绍如何自动升级.或者下载升级版包等等方法,对于一些常 ...

最新文章

  1. SQL SERVER 2008 创建,删除,添加表的主键
  2. 设计模式学习笔记--解释器模式
  3. IDEA项目 let报错爆红
  4. linux .i文件,Linux的文件I/O
  5. 机器视觉LCD行业质量检测解决方案
  6. 笑谈ArcToolbox (1) ArcToolbox 的发展方向
  7. 开课吧Java课堂之SortedSet接口如何去用?
  8. UI Framework-1: Ash Color Chooser
  9. windows核心编程第一章阅读
  10. java接口深入理解_深入理解Java的接口和抽象类
  11. python pywifi模块——暴力破解wifi
  12. python mitmproxy +雷电模拟器 安装
  13. c语言pl是什么意思,相机中PL,ND各代表什么?
  14. 使用pandas处理excel,并使用Openpyxl修改单元格格式
  15. 实例教你区分数字地、模拟地、电源地,单点接地
  16. 小i机器人2019数博会C位展实力 “认知智能”引领行业创新变革
  17. Android系统添加USB共享网络
  18. 摄像头参数D、H、V 分别代表的意思
  19. 学计算机发展方向,2021女生学计算机专业好吗 有什么发展方向
  20. 阿里云ace考试试题以及关于阿里云ace的相关问题解答

热门文章

  1. 机器学习与数据挖掘网上资源搜罗——良心推荐
  2. 结构型模式之Facade模式
  3. 网络编程学习笔记(非阻塞读和写)
  4. 牛客练习赛33 D tokitsukaze and Inverse Number (树状数组求逆序对,结论)
  5. Linux实用命令大合集(长期更新)
  6. Eclipse使用Maven时出现:Index downloads are disabled, search results may be incomplete.问题解决...
  7. java 网络编程UDP
  8. Ubuntu Server对OpenStack的支持
  9. go语言生成自定义uuid_竟然不用写代码!一款可视化 Web 管理后台生成工具
  10. 错误: 找不到android.support.v7.app.AppCompatActivity的类文件