- 热门文章:
- · HOW TO:枚举网络邻居的计算机及其共享文件夹
- · Compression Helper Class using SharpZipLib
- · 关于使用javascript改变诸如ListBox控件的各个Item的值及顺序后怎么获取改变后的顺序
- · javascript客户端规定最多输入的字符串长度
- · c#中使用nunit支持数据库单元测试
- · 设置DataGrid的单选列
- · 用以在记录文件中写入自定义的调试信息(主要是时间)的组件
- · 使用CallByName“代替”模式窗口
- · asp.net里,一个小的自定义错误显示
- · solidworks二次开发--10--从example中寻找
- · PetShop渐近记(1)
- · 从Excel 单元格定位到Word 文档中指定的位置带来的思考
上一篇:使用HttpWebRequest向网站模拟上传数据 >>
使用反射依导航路径调用对象成员方法,或返回对象子、孙属性或字段成员
///如未特别说明,本人所发表的技术文章都为原创, 任何人引用都请包含本声明
///作者: CSDN网名alias88,邮件:alias88@163.com,QQ:63343 ,欢迎加我
/// <summary>
///依导航路径调用对象成员方法,或返回对象其子、孙属性或字段成员.
///例子:
///获得表的第二列的名称
///GetMember(dataTable1.GetType(),"Columns.Item.Name",dataTable1,1)
///执行表的Select方法,并返回可能的DataRow数组
///GetMember(dataTable1.GetType(),"Select",dataTable1,"客户编号 = @#C0001@#)
///取活动表单的名称,静态成员不需传入obj
///GetMember(typeof("System.Windows.Forms.Form"),"ActiveForm.Name",null,null)
/// </summary>
/// <param name="type">获得此类型的子孙成员</param>
/// <param name="memberPath">子孙成员的路径描述,以点作为分隔符</param>
/// <param name="obj">如果成员是静态类型,则为null</param>
/// <param name="args">参数,注意此参数只能为memberPath最后一个成员使用</param>
/// <returns></returns>
public static object GetMember(Type type,string memberPath,object obj,object[] args)
{
if (memberPath==null || memberPath.Trim ()=="")
throw new ArgumentException ("缺少必需的参数","memberPath");
if (type==null )
throw new ArgumentException ("缺少必需的参数","type");
Type _objectType=type;
object _object=obj;
object[] paras=null;
string[] strMember=memberPath.Split (@#.@#);
for (int i=0; i<strMember.Length ;i++)
{
string MemberName=strMember[i];
if (i>=strMember.Length-1 )
paras=args;
_object = _objectType.InvokeMember(MemberName,
BindingFlags.Public | BindingFlags.NonPublic |
BindingFlags.Instance | BindingFlags.Static |
BindingFlags.GetField | BindingFlags.GetProperty |
BindingFlags.InvokeMethod | BindingFlags.IgnoreCase ,
Type.DefaultBinder, _object, paras);
if (_object!=null)
_objectType=_object.GetType ();
else if (i<strMember.Length-1)
throw new ArgumentNullException(MemberName);
}
return _object;
}
下一篇:HOW TO:枚举网络邻居的计算机及其共享文件夹 >>
相关文章:
- · 如何定制Web服务器控件的TagPrefix 而不是出现cc1
- · (论坛答疑点滴)如何在一个用户控件内操作另外一个用户控件的中的控件?
- · 右键菜单[写入注册表]读取所选文字图片并将地址发送到指定页面!
- · 一个负载均衡问题的解决过程
- · 在web开发中的三个层次使用事务
- · (论坛答疑点滴)如何得知调用当前方法的方法名?
- · (论坛答疑点滴)用户控件动态加载PostBack后的问题
- · Implementing Cross-Browser Compatible Smart Navigation Features
- · ASP.NET立即上手教程 13(完)
- · 关于多层repeater,datagrid,datalist嵌套的示例
- · Display hierarchical data with TreeView
- · 怎么后台添加CheckBoxList并且得到选择结果
- · HTTP Downloader for Updater Application Block 2 (GotDotNet)
- · HOW TO:从资源管理器中拖放文件到控件
- · dataGrid在页面拖动(用表头),不刷新页面
- · winform下如何检测你一个给定的网址(Ull),是否可访问?
- · Abstract Factory pattern -- Structural example
- · XML-RPC学习笔记(一)
- · [VS宏]根据函数名称定位函数
- · 三层式的层次划分
- · 服务器控件中js脚本注册方法
- · 复制文件夹所有内容和删除整个文件夹的2个函数
- · 动态绑定DATAGRID里的DropDownList
- · 彻底解决!无效的 CurrentPageIndex 值.它必须大于等于 0 且小于 PageCount!的问题
- · HOW TO:检索本机硬件信息
- · HOW TO:检索应用程序当前执行代码的引用信息
- · HOW TO:初始化共享变量
- · 怎么触发DataGrid模板列中控件的事件?
- · 刚学ASP.Net,学了个简单的计算器
- · 全选DataGrid里的复选框
- · WEB页面多语言支持解决方案
- · javascript 与 asp.net 的交互
- · 动态模板列更新数据分页的例子
- · DataList 控件分页操作
- · 如何用请求字符串传值给用模式窗口打开的aspx页面。
- · Duwamish7学习笔记1
- · Matt Powell的《Server-Side 异步Web Methhods》
- · DataGrid和DropDownList的一些配合以及使用css定制DataGrid
