我有一個名爲Job的對象,它內部有字符串,整數和枚舉作爲公共對象。然後將每個作業放入一個隊列中,並遍歷流程中的隊列。將容器對象中的所有公共對象(字符串/整數/枚舉)的值寫入控制檯
我想要做的是,當我出列每個作業時,我可以一般地遍歷每個作業並將公共對象名稱和值寫入控制檯。
我想出瞭如何編寫對象名稱到控制檯,我可以明顯寫入值,但問題是我不知道如何從Job對象獲取每個公共字符串/ int /枚舉。
我已經看了 C# object dumper How to select all the values of an object's property on a list of typed objects in .Net with C# 但不明白我怎麼會請使用接受答案的出現。
下面的代碼到我的作業類:
class Job
{
#region Constructor
public Job()
{
}
#endregion
#region Accessors
public int var_job { get; set; }
public jobType var_jobtype { get; set; } //this is an enum
public string var_jobname { get; set; }
public string var_content { get; set; }
public string var_contenticon { get; set; }
#endregion
}
這裏是一個的返回變量的名稱代碼:(從https://stackoverflow.com/a/2664690/559988)
GetName(new {Job.var_content}) //how I call it
static string GetName<T>(T item) where T : class
{
return typeof(T).GetProperties()[0].Name;
}
理想我有一個輸出到控制檯這樣:
Queuing Jobs Now
--------------------
var_job = its value
var_jobtype = its value
var_jobname = its value
var_content = its value
var_contenticon = its value
想法?
使用反射遍歷屬性,獲取值,使用它的tostring()方法。或者重寫toString(或另一種方法),從類中構建一個很好的輸出。當然,你必須保持這一點...... – 2012-01-03 17:34:13
我想我逐漸通過在這裏看例子:http://msdn.microsoft.com/en-us/library/aa332475(v=vs.71 ).aspx當我得到它時,我會發布我的解決方案。 – cvocvo 2012-01-03 17:50:15
爲什麼不能在你的''ToString'(http://msdn.microsoft.com/en-us/library/system.object.tostring.aspx)(或者用不同的名字寫一個類似的方法)工作類? – 2012-01-03 18:40:57