以前在程式出現Exception的時候,通常會需要紀錄一下當前各參數的情形,以方便偵錯
但有的Class的Property真的很多...
以前在程式出現Exception的時候,通常會需要紀錄一下當前各參數的情形,以方便偵錯
但有的Class的Property真的很多,一旦有個Class像這樣:
public class MyClass
{
public int Number { get; set; }
public string Name { get; set; }
public int Age { get; set; }
public string Address { get; set; }
}
想知道每個Property的話,我會寫成這樣:
textBox1.Text = new StringBuilder("MyClass的各個Property是:")
.AppendFormat("Name={0},", myNewClass.Name)
.AppendFormat("Age={0},", myNewClass.Age)
.AppendFormat("Address={0},", myNewClass.Address)
.AppendFormat("Number={0}", myNewClass.Number).ToString();
然後Property一旦有修改,免不了要把每個有用到的地方都找出來,一個一個改...
直到上個禮拜突然覺得:真的沒有別的解法嗎?我一定要這麼累?
於是開始上網找解法,就看到了Reflection
於是我會弄個方法像這樣:
private string GetPropertyString(StringBuilder vStringBuilder, Object vObject)
{
PropertyInfo[] vPropertyInfos = vObject.GetType().GetProperties();
foreach (PropertyInfo vPropertyInfo in vPropertyInfos)
{
vStringBuilder.AppendFormat("{0}={1},", vPropertyInfo.Name, vPropertyInfo.GetValue(vObject, null));
}
return vStringBuilder.Remove(vStringBuilder.Length - 1, 1).ToString();
}
然後要用的時候,就像這樣:
textBox2.Text = this.GetPropertyString(new StringBuilder("MyClass的各個Property是:"), myNewClass);
一行就結束,以後Property就算有改,也都不用再動手改了...
各位看倌如果有比較好的建議,還請不吝指教囉^^