首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

! -[反射]

2012-04-05 
求救!! --[反射]现在学到反射, 一头雾水啊!有人说:可以copy 对象,可以找到dll 类中隐藏的方法与属性。不知

求救!! --[反射]
现在学到反射, 一头雾水啊!
  有人说:
可以copy 对象,
可以找到dll 类中隐藏的方法与属性。
不知怎么理解。
下面是用反射做的copy 对象;---求解


C# code
//--猫类public class Cat{    public int Age { get; set; }    public string Name { get; set; }    //假设它的属性还有很多很多}//--测式Copyprivate void button3_Click(object sender, EventArgs e){    Cat c1 = new Cat() { Age = 20, Name = "小猫" };    Type type = typeof(Cat);    Cat c2 = new Cat();//---下面这段的foreach 是什么意思?它做了什么?    foreach (PropertyInfo info in type.GetProperties())    {        info.SetValue(c2, info.GetValue(c1, null), null);    }    labName.Text = c2.Name;    labAge.Text = c2.Age.ToString();}


[解决办法]
只说一句,如无必要,请不要使用反射,反射使用的越多,说明你的结构设计的越不合理。
[解决办法]
就是让你把string变成class~
[解决办法]
让你不知道程序集里内容的时候来使用程序集
[解决办法]
Type type = typeof(Cat);
//上面去的Cat类的Type类型
GetProperties取得里面所有的属性,然后遍历,为每个属性赋值
foreach (PropertyInfo info in type.GetProperties())
{
info.SetValue(c2, info.GetValue(c1, null), null);
}
帮助是你最好的老师,一定要看

[解决办法]
楼主你分析这个代码。
C# code
Cat c1 = new Cat() { Age = 20, Name = "小猫" };Type type = typeof(Cat);StringBuilder sb = new StringBuilder();foreach (PropertyInfo info in type.GetProperties()){    sb.Append(info.Name+"\t"+info.GetValue(c1, null).ToString()+"\r\n");}MessageBox.Show(sb.ToString(),"提示"); 

热点排行