2013-06-22 46 views
0

我有一個包含字符串,int和double的屬性的對象。 我有三個對象的實例:item1,item2,item 3.轉換對象的實例以便能夠循環通過

我可以通過說item1.name等打印出來的值 但是我怎樣才能通過對象循環並打印值? 我不認爲我可以將對象轉換爲列表或數組,因爲對象具有不同的類型 - 對嗎?

+0

你能澄清,如果所有的對象都是同一類型的? –

+0

對象屬性是不同的類型 - 我有ObjectName.ID = int,ObjectName.Name =字符串等。 – Dashsa

+0

是相同類型的item1,item2和item3嗎?如果是這樣,你可以製作一份清單。 –

回答

2

如果你的意思是他們都是同一類的實例,那麼在這種情況下你可以做什麼是非常基本的。如果是這種情況,您可以創建該類類型的列表。然後以任何您希望的方式遍歷對象,並且您將能夠打印出該類所包含的任何公共屬性。

var examples = new List<ExampleObject>() 
{ 
    new ExampleObject { ID = 1, Name = "Display" }, 
    new ExampleObject { ID = 2, Name = "Display2" }, 
}; 

examples.ForEach(x => Console.WriteLine("id = {0}, name = {1}", x.ID, x.Name)); 
+0

謝謝 - 工作 – Dashsa

0

如果它們都具有「名稱」屬性,則可以創建包含該屬性的接口。

public Interface IShowName 
{ 
    string Name { get; } 

} 

然後讓每個類型實現IShowName(根據你,他們已經這樣做)。然後,您可以將它們全部放入IShowName的列表中。

var myList = new List<IShowName>(); 
myList.Add(obj1); 
myList.Add(obj2); 
myList.Add(obj3); 

foreach(var nameShower in myList) 
{ 
    System.Console.WriteLine(nameShower.Name); 
} 
+0

感謝您的回答,但我不認爲它是我需要的 - 對象有7個屬性,我有3個屬性實例 - 所以我需要遍歷每個實例並顯示每個屬性的值。 _ 那有意義嗎? – Dashsa

+0

那麼,對於一個給定的對象,你想寫出所有的屬性?你不知道對象的類型?這聽起來像反射在你的未來。 –

0

可以與反思這樣做:

foreach (PropertyInfo propertyInfo in obj1.GetType().GetProperties()) 
{ 
    //If property is public 
    if (propertyInfo.CanRead) 
    { 
     object propValue = propertyInfo.GetValue(obj1, null); 
     System.Console.WriteLine(propValue.ToString()); 
    } 
}