浅谈Dynamic 关键字系列之二:调用属性,方法,字段
新建类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 关键字系列之二:调用属性,方法,字段相关推荐
- 浅谈Dynamic 关键字系列之三(下):ExpandoObject,DynamicObject,DynamicMetaObject
接上文:浅谈Dynamic关键字系列之三(上) 为什么TryXXX方法没有被调用?? 将DynamicProduct 中的name修饰符改为private: private string name; ...
- 浅谈语音信号处理系列之二 语音信号处理的基础
下面简单扼要的总结几个基本概念,如果想深入了解请告诉我或者直接参考相关文献. 一 语音信号的产生 一般来说,声音是通过振动产生的.同样,语音是肺里面的空气形成气流通过声道,再从口 鼻辐射而产生的.语音 ...
- 浅谈ARM Cortex-M系列架构——架构篇
浅谈ARM Cortex-M系列架构文章 浅谈ARM Cortex-M系列架构--指令集 目录 前言 1.操作状态 2.操作模式 二.寄存器 1.通用目的寄存器 2.R13,栈指针(SP) 3.R14 ...
- 袁萌浅谈C919大飞机(二)
袁萌浅谈C919大飞机(二) 2015年11月2日,C919大飞机从生产线上下来.从此,C919大飞机的机体算是诞生了.至于这个大家伙会不会"飞"起来,当时人们还不知道. 人们的预 ...
- 单一修改高程值lisp_浅谈AutoCAD中修改高程的四种方法
浅谈 AutoCAD 中修改高程的四种方法 摘 要: 在使用 AutoCAD 进行数字化成图工作中,经常遇到线划的标高不为零,及高程点的值与实地不符,需要对其进行修改等情况,结合实 际工作经验,简单介 ...
- php layer弹出层更改背景,浅谈layer弹出层按钮颜色修改方法
layer弹出层有多种格式的弹出,使用方法也不细述. 在弹出确认框可使用confirm或open方式 在open中 layer.open({ content: '确认提交?', btn: [" ...
- java执行jar中的main_浅谈java 执行jar包中的main方法
浅谈java 执行jar包中的main方法 通过 OneJar 或 Maven 打包后 jar 文件,用命令: java -jar ****.jar 执行后总是运行指定的主方法,如果 jar 中有多个 ...
- laytpl语法_浅谈laytpl 模板空值显示null的解决方法及简单的js表达式
浅谈laytpl 模板空值显示null的解决方法及简单的js表达式 laytpl 模板语法 {{ d.field }} 输出一个普通字段,不转义html 官方的说明 但d.field 为空时会显示nu ...
- android 系统升级 方法,安卓系统怎么升级 浅谈安卓系统更新升级的几种方法
最近有网友问小编"安卓系统怎么升级?",针对该问题,笔者也在网上查找了下相关资料,不过并没有找到什么有价值的相关介绍,多数都是介绍如何自动升级.或者下载升级版包等等方法,对于一些常 ...
最新文章
- SQL SERVER 2008 创建,删除,添加表的主键
- 设计模式学习笔记--解释器模式
- IDEA项目 let报错爆红
- linux .i文件,Linux的文件I/O
- 机器视觉LCD行业质量检测解决方案
- 笑谈ArcToolbox (1) ArcToolbox 的发展方向
- 开课吧Java课堂之SortedSet接口如何去用?
- UI Framework-1: Ash Color Chooser
- windows核心编程第一章阅读
- java接口深入理解_深入理解Java的接口和抽象类
- python pywifi模块——暴力破解wifi
- python mitmproxy +雷电模拟器 安装
- c语言pl是什么意思,相机中PL,ND各代表什么?
- 使用pandas处理excel,并使用Openpyxl修改单元格格式
- 实例教你区分数字地、模拟地、电源地,单点接地
- 小i机器人2019数博会C位展实力 “认知智能”引领行业创新变革
- Android系统添加USB共享网络
- 摄像头参数D、H、V 分别代表的意思
- 学计算机发展方向,2021女生学计算机专业好吗 有什么发展方向
- 阿里云ace考试试题以及关于阿里云ace的相关问题解答
热门文章
- 机器学习与数据挖掘网上资源搜罗——良心推荐
- 结构型模式之Facade模式
- 网络编程学习笔记(非阻塞读和写)
- 牛客练习赛33 D	tokitsukaze and Inverse Number (树状数组求逆序对,结论)
- Linux实用命令大合集(长期更新)
- Eclipse使用Maven时出现:Index downloads are disabled, search results may be incomplete.问题解决...
- java 网络编程UDP
- Ubuntu Server对OpenStack的支持
- go语言生成自定义uuid_竟然不用写代码!一款可视化 Web 管理后台生成工具
- 错误: 找不到android.support.v7.app.AppCompatActivity的类文件