首页 新闻 会员 周边 捐助

如何获得当前函数接收的参数值?

0
悬赏园豆:50 [已关闭问题] 关闭于 2013-04-16 17:21

如 public void Hi(string name,string id,.......){

....

/*********

我希望在这里获取到Hi这个函数当前的参数值列表,

参数太多了,不是通过name,id去获取,而是希望能用反射直接获取到整个参数列表,然后foreach。。

*****/

}

找了很久,用ParameterInfo方法只能反射出其类型等信息,但我要的是参数对应的值,求大牛指教!

ppshinebl的主页 ppshinebl | 初学一级 | 园豆:156
提问于:2013-04-16 15:14
< >
分享
所有回答(4)
0
滴答的雨 | 园豆:3660 (老鸟四级) | 2013-04-16 15:27
0
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;
    }

 

 
悟行 | 园豆:12559 (专家六级) | 2013-04-16 15:29

做为一个对象再反射确实可以奥。。但楼主貌似没有去定义那么多class,可能更想直接获取基本类型变量的值吧

支持(0) 反对(0) 滴答的雨 | 园豆:3660 (老鸟四级) | 2013-04-16 16:13

@滴答的雨: 不行的,这段程序的错误是prp.GetValue(atype, new object[]{})第一个参数是type。PropertyInfo[] props = t.GetProperties();也不对,获取这个类型的属性有什么用?

支持(0) 反对(0) 水牛刀刀 | 园豆:6350 (大侠五级) | 2013-04-16 16:31

@水牛刀刀: 

 

// PropertyInfo 的API
public virtual object GetValue(object obj, object[] index);
public virtual void SetValue(object obj, object value, object[] index);
支持(0) 反对(0) 滴答的雨 | 园豆:3660 (老鸟四级) | 2013-04-16 17:12
0

不行的,你应该重新设计你的参数结构。

水牛刀刀 | 园豆:6350 (大侠五级) | 2013-04-16 16:29
0

嘿,有个比较好的解决方案

可以参考 http://stackoverflow.com/questions/2405230/can-i-get-parameter-names-values-procedurally-from-the-currently-executing-funct

ppshinebl | 园豆:156 (初学一级) | 2013-04-16 17:16
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册