2013-07-30 25 views
0

我有以下類,它有兩個嵌套類;我如何迭代嵌套類並將對象傳遞給我的函數

public class Request 
{ 
    public Hotel Hotel {get;set;} 
    public Room Room {get;set;} 
} 

的嵌套類

public class Hotel 
{ 
    public int HotelId {get;set;} 
    public string Name {get;set;} 
    public string Address {get;set;} 
    public string CountryCode {get;set;} 
} 

public class Room 
{ 
    public int RoomId {get;set;} 
    public string Name {get;set;} 
} 

基本上我可以精細創建我的對象;

Request oRequest = new Request(); 

我想要做的是能夠通過類來迭代找到任何嵌套類,並通過這些給一個函數像

Type t = oBookingRequest.GetType(); 

foreach (PropertyInfo pi in t.GetProperties()) 
{ 
    CallMyFunction(pi); 
} 

我有打電話CallMyFunction時的問題(PI )我實際上無法查看類屬性值,就好像我沒有將pi傳遞爲實際對象一樣?我是否正確地做這件事,因爲如果我調用函數CallMyFunction(oRequest.Hotel),它可以正常工作。

編輯:

功能CallMyFunction是使用的ValidationResult一個ValidationContext功能,所以我需要通過包含所有屬性的實際的對象,而不是每個單獨的屬性值。該功能CallMyFunction是

private List<ValidationResult> CallMyFunction (object oObject) 
    { 
     var context = new ValidationContext(oObject, serviceProvider: null, items: null); 
     var results = new List<ValidationResult>(); 
     Validator.TryValidateObject(oObject, context, results, false); 

     return results; 
    } 
+0

你什麼意思,你不能獲取類數據?你的意思是財產價值?你也編寫'嵌套類',但你只顯示兩個屬性。這些類是否真的在Request類中定義? –

+0

對不起我的意思是屬性值 – Tommassiov

+0

向我們展示了'CallMyFunction'的定義。 –

回答

1

您需要的財產的實際價值傳遞到使用PropertyInfo.GetValue你的函數:

foreach (PropertyInfo pi in t.GetProperties()) 
{ 
    CallMyFunction(pi.GetValue(oBookingRequest, null)); 
} 
+0

謝謝,但這並不能幫助我解決問題。我已更新我的問題以添加更多說明。 – Tommassiov