通过晚期绑定读写属性Property和字段Field
来源:互联网 发布:网络类型无需合约版 编辑:程序博客网 时间:2024/05/17 08:58
晚期绑定读写属性Property和字段Field均可以使用晚期绑定对象的InvokeMember()方法实现,也可以使用所指定类型的Type对象反射实现。
本例首先建立一个外部类项目Humen,并建立类Person,增加Name属性和_age字段,并建立一个主项目LateBindingOther并建立类LateBindingOther,添加外部引用Humen.dll文件,在LateBindingOther里使用了两种方法来读写属性Property和字段Field。在类Person里故意增加了命名空间,注意在LateBindingOther的Type tp = am.GetType("Human.Person", false, false)里,不能忘掉命名空间。
项目Humen的类Person代码:
项目LateBindingOther的类LateBindingOther代码:
运行效果:
指定类型的Type对象为tp,晚期绑定所创建该类型对象为obj,使用tp.InvokeMember()方法读写string类型的属性成员代码如下:
//写入Name属性
tp.InvokeMember("属性名称", BindingFlags.SetProperty, null, obj, 属性数组);
//读取Name属性
string name = (string)tp.InvokeMember("书信", BindingFlags.GetProperty, null, obj, null);
如果不用InvokeMember()方法,用以下方法更为简单直观。利用SetValue和GetValue方法,最后一个参数为索引化属性值的索引值,如果不是索引化属性值则取null
//获取指定属性的PropertyInfo类型对象p
PropertyInfo p = tp.GetProperty("属性名称");
//写入属性
p.SetValue(obj, 属性值, null);
//读取属性
string name = (string)p.GetValue(obj, null);
- 通过晚期绑定读写属性Property和字段Field
- 【C#】-属性(Property)和字段(Field)的区别
- 尽量用属性(Property),而不是字段(Field)
- 字段field 属性 property 方法 method
- C# 字段(Field)、属性(Property)、特性(Attribute)
- 反射和晚期绑定
- 早期绑定和晚期绑定
- c#中字段(field)和属性(property)的区别
- 基础知识备忘——字段(Field),属性(Property),特性(Attribute)
- 通过晚期绑定调用方法成员
- C#中的域(field)和属性(property)
- C#中的域(field)和属性(property)
- C#中的域(Field)和属性(Property)
- 尽可能使用属性(Property),少使用字段(Field)实现对数据的访问 (轉 )
- JSP Bound Property 绑定属性
- C#中的域(field)和属性(property)_C#教程
- C#中的域(field)和属性(property)_C#教程
- Butter Knife ——Android视图的字段(Field)和方法(Method)绑定
- 12星座爱情观 05-11-21 15 05 发表于 《另类的精灵》 分类 未分类
- Linux系统调用-- recv/recvfrom/recvmsg函数详解
- struts——hibernate——spring优缺点
- struts——hibernate——spring优缺点
- 页面自动跳转,alert();在firefox报无参数错误
- 通过晚期绑定读写属性Property和字段Field
- U盘基本工作原理
- C++架构设计开发学习之路
- 置成O就
- Java应用描述文件(JAD)编辑器
- C#中汉字排序简单示例(拼音/笔划)
- 取得所有表
- gcc编译流程及编译选项分析
- WebBrowser页面与WinForm交互技巧