浅谈Dynamic 关键字系列之二:调用属性,方法,字段
来源:互联网 发布:信息和数据的关系是 编辑:程序博客网 时间:2024/05/21 09:12
新建类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 关键字系列之二:调用属性,方法,字段
- 浅谈Dynamic 关键字系列之三:ExpandoObject, DynamicObject, DynamicMetaObject
- 浅谈Dynamic 关键字系列之四:dynamic为什么比反射快
- 浅谈Dynamic 关键字系列之一:dynamic 就是Object
- 浅谈Dynamic 关键字系列之一:dynamic 就是Object
- 浅谈Dynamic 关键字系列之三(上):ExpandoObject, DynamicObject, DynamicMetaObject
- 反射之字段、方法、构造器的调用(二)
- runtime之@dynamic属性
- 黑马程序员---浅谈类的字段,属性,关键字,修饰符,索引
- 使用反射调用类型成员 方法,字段,属性
- 通过反射获取类属性字段 以及 调用类方法
- C++程序员学Java系列之二二:static 关键字
- C#反射的学习(二)--访问字段、属性、方法
- 浅谈函数调用(二)
- 浅谈属性动画简单使用之实现卫星菜单(二)
- Core Data浅谈系列之二 : 简单的CURD
- Core Data浅谈系列之二 : 简单的CURD
- 浅谈Dynamic 关键字系列之一:dynamic 就是Object
- 新旧版hadoop的一些差别
- 编译型语言 和 解释型语言 的区别
- Apparent-time hypothesis
- 循序渐进学unix——上机记录(六),exec
- 浅谈Dynamic 关键字系列之二:调用属性,方法,字段
- SQL Server 跨库查询乱码问题
- 效率问题,Linq查询/多线程/反射/装箱相关
- 浅谈Dynamic 关键字系列之三:ExpandoObject, DynamicObject, DynamicMetaObject
- DataBase => O/R mapping Class => UI 解决方案(.NET/CS/WinForm/Linq)
- (google面试题)找出无序数组中连接和最大排序
- 浅谈Dynamic 关键字系列之四:dynamic为什么比反射快
- [WCF权限控制]ASP.NET Roles授权[上篇]
- [WCF权限控制]ASP.NET Roles授权[下篇]