我用这个反射怎么不对呢?帮忙看下,在线等!

kangl_china 2009-11-25 11:24:42
k1="10"
k2="8"
k3="2"

这3个都是对象ss的属性!ss.k1="10";ss.k2="8";ss.k3="2";

public static string getnum()
{
Type type = ss.GetType();
string temp="";
for(int i = 1; i < 4; i++)
{
FieldInfo fi=type.GetField("k"+i.ToString());
temp += fi.GetValue(type).ToString();
}
return temp;
}


运行到fi,发现fi=null,下面就报错了!高手帮看一下!谢谢!
...全文
133 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
宝_爸 2009-11-25
  • 打赏
  • 举报
回复

private void button1_Click(object sender, EventArgs e)
{
SS ss = new SS();
ss.k1 = "1";
ss.k2 = "2";
ss.k3 = "3";

Type type = ss.GetType();
string temp = "";
for (int i = 1; i < 4; i++)
{
PropertyInfo fi = type.GetProperty("k" + i.ToString());
temp += fi.GetValue(ss, null).ToString();
}
Console.WriteLine(temp.ToString());
}
宝_爸 2009-11-25
  • 打赏
  • 举报
回复
k1,k2,k3不是Field 而是Property
ViewStates 2009-11-25
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 h_w_king 的回复:]
FieldInfo  //指公共字段.
PropertyInfo //公共属性
Type type = ss.GetType();
            string temp = "";
            for (int i = 1; i < 4; i++)
            {
                PropertyInfo fi = type.GetProperty("k" + i.ToString());
                temp += fi.GetValue(ss,null).ToString();
            }


而且你取法也不对。 应是
  FieldInfo fi=type.GetField("k"+i.ToString());
          temp += fi.GetValue(ss).ToString(); 


[/Quote]

你GETFIELD取到的是字段,你要取的话要在GETFIELD的第二个参数中指明其BindingFlag
h_w_king 2009-11-25
  • 打赏
  • 举报
回复
FieldInfo //指公共字段.
PropertyInfo //公共属性
Type type = ss.GetType();
string temp = "";
for (int i = 1; i < 4; i++)
{
PropertyInfo fi = type.GetProperty("k" + i.ToString());
temp += fi.GetValue(ss,null).ToString();
}


而且你取法也不对。 应是
FieldInfo fi=type.GetField("k"+i.ToString());
temp += fi.GetValue(ss).ToString();

gomoku 2009-11-25
  • 打赏
  • 举报
回复
GetField != GetProperty
yuanhuiqiao 2009-11-25
  • 打赏
  • 举报
回复
按说不会,ss赋值没?倒是底下那句可能报错,看不到完全代码,不好说
kangl_china 2009-11-25
  • 打赏
  • 举报
回复
跟你说的意思一样的啊!不行啊
kangl_china 2009-11-25
  • 打赏
  • 举报
回复
 public string k2
{
set{_k2=value;}
get{return _k2;}
}
public string k3
{
set{_k3=value;}
get{return _k3;}
qlzf11140820 2009-11-25
  • 打赏
  • 举报
回复
运行到fi,发现fi=null,下面就报错了!高手帮看一下!谢谢!
--------------------------
ss s=new ss();
Type type = s.GetType();
...........
kangl_china 2009-11-25
  • 打赏
  • 举报
回复
class SS
{
private string _k1;
private string _k2;
private string _k3;

public string k1
{
set{_k1=value;}
get{return _k1;}
}
public string k2
{
set{_k1=value;}
get{return _k1;}
}
public string k3
{
set{_k1=value;}
get{return _k1;}
}
}
qlzf11140820 2009-11-25
  • 打赏
  • 举报
回复
运行到fi,发现fi=null,下面就报错了!高手帮看一下!谢谢!
--------------------------
ss s=new ss();
Type type = ss.GetType();
...........
fengjian_428 2009-11-25
  • 打赏
  • 举报
回复
ss类的代码有没?

111,120

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧