根据给定的对象和路径,获得其子孙成员

///

1<summary>   
2/// 根据给定的对象和路径,获得其子孙成员   
3/// </summary>

///

1<param name="pTopObject"/>

要获得的成员是此对象的子孙,一般为Form
///

1<param name="pObjPath"/>

依此路径获取,例如: TextBox1 或TextBox1.Size
///

1<param name="Index"/>

用索引化属性的可选索引值返回
///

1<returns>子孙</returns>

public static object GetMember(object pTopObject, string pObjPath,object[] Index)
{
string[] strMember;
string MemberName="";
object obj=null;
Type objType=null;

try
{
strMember=pObjPath.Split ('.');
for (int i=0; i<strMember.Length && strMember[i]!="" ;i++)
{
if (i==0)
{
obj=(object)pTopObject;
objType=pTopObject.GetType ();
}
MemberName=strMember[i];

obj = (object) objType.InvokeMember(MemberName,
BindingFlags.Public | BindingFlags.NonPublic |BindingFlags.IgnoreCase |
BindingFlags.Instance | BindingFlags.Static| BindingFlags.GetField | BindingFlags.GetProperty , null, obj, null);
if (obj!=null) objType=obj.GetType ();
else throw new Exception ("不能根据:" + pObjPath + "获得" + pTopObject.ToString() + "的成员:" + MemberName);
}
return obj;

}
catch ( System.Exception ex ){ throw new Exception ("获取 " + pObjPath + " 的成员:" + MemberName + "时发生错误:\n" + ex.Message ); }

}

Published At
Categories with Web编程
Tagged with
comments powered by Disqus