2012-10-01 202 views
-4

如何獲取對象中存在的所有日期時間類型?從對象中獲取特定類型

E.G.裝運對象包含有關裝運的所有詳細信息,如託運人名稱,收貨人等。它還包含許多日期時間字段,例如收到日期,運輸日期,交貨日期等。

如何獲取所有日期字段裝運對象?

+4

請告訴我你的代碼呢? – BugFinder

回答

1

井的最簡單的方法是直接訪問屬性例如

var receivedDate = shipment.ReceivedDate; 
var transportedDate = shipment.DeliveryDate; 
... 

另一種做法是讓你的Shipment對象例如返回列表你

public Dictionary<string, DateTime> Dates 
{ 
    get 
    { 
     return new Dictionary<string, DateTime>() 
     { 
      new KeyValuePair<string, DateTime>("ReceivedDate", ReceivedDate), 
      new KeyValuePair<string, DateTime>("DeliveryDate", DeliveryDate), 
      ... 
     } 
    } 
} 

... 
foreach (var d in shipment.Dates) 
{ 
    Console.WriteLine(d.Key, d.Value); 
} 

或者最後,使用反射來遍歷屬性:

public Dictionary<string, DateTime> Dates 
{ 
    get 
    { 
     return from p in this.GetType().GetProperties() 
       where p.PropertyType == typeof(DateTime) 
       select new KeyValuePair<string, DateTime>(p.Name, (DateTime)p.GetValue(this, null)); 
    } 
} 
+0

關於SoC的思考,我會推薦使用'返回列表給你'的方法! – Aphelion

+0

@Aphelion - 我真的不知道哪裏有SoC問題在這裏。屬性已經屬於該對象,因此沒有理由爲什麼該對象無法返回它們的列表(無論出於何種原因)。由於OP沒有真正說出他們需要日期的原因(或者有多少日期),所以很難看出哪種解決方案最適合他們。 – James

+0

很好的解釋。謝謝。我必須同意,很難看到需要什麼。我們甚至不確定我們是否可以修改對象來提供列表。 – Aphelion