如 public void Hi(string name,string id,.......){
....
/*********
我希望在这里获取到Hi这个函数当前的参数值列表,
参数太多了,不是通过name,id去获取,而是希望能用反射直接获取到整个参数列表,然后foreach。。
*****/
}
找了很久,用ParameterInfo方法只能反射出其类型等信息,但我要的是参数对应的值,求大牛指教!
public static Dictionary<string, object> DictionaryFromType(object atype) { if (atype == null) return new Dictionary<string, object>(); Type t = atype.GetType(); PropertyInfo[] props = t.GetProperties(); Dictionary<string, object> dict = new Dictionary<string, object>(); foreach (PropertyInfo prp in props) { object value = prp.GetValue(atype, new object[]{}); dict.Add(prp.Name, value); } return dict; }
做为一个对象再反射确实可以奥。。但楼主貌似没有去定义那么多class,可能更想直接获取基本类型变量的值吧
@滴答的雨: 不行的,这段程序的错误是prp.GetValue(atype, new object[]{})第一个参数是type。PropertyInfo[] props = t.GetProperties();也不对,获取这个类型的属性有什么用?
@水牛刀刀:
// PropertyInfo 的API public virtual object GetValue(object obj, object[] index); public virtual void SetValue(object obj, object value, object[] index);
不行的,你应该重新设计你的参数结构。
嘿,有个比较好的解决方案
可以参考 http://stackoverflow.com/questions/2405230/can-i-get-parameter-names-values-procedurally-from-the-currently-executing-funct