2013-09-22 5 views
0

я структура нравится:Как читать объекты структуры по одному в C#?

public struct GoldAverages 
    { 
     public decimal Sell_GoldOunce; 
     public decimal Buy_GoldOunce; 
     public decimal Sell_SilverOunce; 
     public decimal Buy_SilverOunce; 
     public int Sell_Mazene; 
     public int Buy_Mazene; 
     public int Sell_Gram_18; 
     public int Buy_Gram_18; 
     public int Sell_Gram_24; 
     public int Buy_Gram_24; 
    } 

Как я могу читать мои STRUCT пункты один за другим (по названию товара и стоимости) и поместить их в Lable.text

как это

GoldAverages Gold = new GoldAverages(); 
foreach (var item in Gold) 
     { 
      LblSummery.Text += item.name + " : " + item.value + "|"; 
     } 
+2

Почему бы не использовать массив пар ключ-значение или словарь вместо этого? Похоже, вы пытаетесь решить неправильную проблему. – BrokenGlass

+0

. Я хочу теперь, как мы можем получить доступ к дочерним элементам по одному – AminAmiriDarban

+0

Или, возможно, прочитать это [Когда использовать struct в C#?] (Http://stackoverflow.com/questions/521298/when-to-use-struct-in-c? Rq = 1) – Prix

ответ

-1
GoldAverage Gold = new GoldAverage(); 
    StringBuilder sb = new StringBuilder(); 
    foreach (var field in typeof(GoldAverage).GetFields()) 
    { 
     sb.append(field.Name.ToString() + " : " + field.GetValue(Gold).ToString() + " | "); 
3

вы можете попробовать это (вам нужно добавить System.Reflection имен)

GoldAverages Gold = new GoldAverages(); 
Type gType = Gold.GetType(); 
IList<PropertyInfo> properties = new List<PropertyInfo>(gType.GetProperties()); 

StringBuilder sb = new StringBuilder(); 

foreach (PropertyInfo property in properties) 
{ 
    string propertyName = property.Name; 
    string propertyValue = property.GetValue(Gold, null); 
    sb.Append(propertyName + " : " + propertyValue + " | "); 
} 

LblSummery.Text = sb.ToString(); 

И теперь, когда я снова посмотрю на ваш код, вам нужно будет обновить свои поля, чтобы быть свойствами, которые, я считаю, являются тем, что вам нужно. Дайте мне знать иначе.

+1

Или вы можете использовать 'Type.GetFields', нет? И, пожалуйста, используйте 'StringBuilder'! –

+0

Обновлено с помощью StringBuilder. «GetFields» - это опция, но свойства более типичны, когда к данным обращаются другие объекты. Я предлагаю, чтобы OP обновляло эти поля до свойств. –

+0

GoldAverage Gold = новый GoldAverage(); StringBuilder sb = new StringBuilder(); foreach (поле var в typeof (Functions.GoldAverage) .GetFields()) { sb.append (field.Name.ToString() + ":" + field.GetValue (Gold) .ToString() + "|"); – AminAmiriDarban

Смежные вопросы