2 回答

TA貢獻(xiàn)1806條經(jīng)驗(yàn) 獲得超8個(gè)贊
你的當(dāng)然是1111
你在反射獲取對象的時(shí)候 循環(huán)操作的時(shí)候操作的是同一個(gè)對象
你必須在循環(huán)中 對對應(yīng)的類型創(chuàng)建新的對象
然后加入List中的 才并非都引用同一個(gè)對象
public static List<object> GetRefection(object obj)
{
List<object> objs = new List<object>();
Type t = obj.GetType();
PropertyInfo[] pros = t.GetProperties();
for (int i = 0; i < pros.Length; i++)
{
obj=t.InvokeMember("Refection", BindingFlags.CreateInstance, null, null, null); //加上這一句
foreach (PropertyInfo pro in pros)
{
pro.SetValue(obj, i.ToString(), null);
}
objs.Add(obj);
}
return objs;
}
其他代碼不變 0011

TA貢獻(xiàn)1891條經(jīng)驗(yàn) 獲得超3個(gè)贊
for (int i = 0; i < 2; i++)
{
obj=t.InvokeMember("Refection", BindingFlags.CreateInstance, null, null, null); //######
foreach (PropertyInfo pro in pros)
{
pro.SetValue(obj, i.ToString(), null);
}
objs.Add(obj);
}
因?yàn)槟氵@一句objs.Add(obj);添加的是同一個(gè)對象,第一次雖然令其屬性為0,第二次又把它屬性弄成1,都是對這一個(gè)對象操作,”他倆“的屬性會(huì)指到同一個(gè)引用,所以都是11了,你試著增加一個(gè)屬性,然后從0到3循環(huán),將來會(huì)輸出222222的
- 2 回答
- 0 關(guān)注
- 144 瀏覽
添加回答
舉報(bào)