2015-05-23 3 views
0

Я строю проект для своей степени (для моей школы), и я создал список, общий список для добавления объектов и работы с ними.Как я могу получить значения каждого объекта в списке

Hapeens, что я также создать внутри моего списка класса новый метод получения списка содержимого списка для всех <T> объектов

Я хотел бы напечатать каждый <T> параметр или значение, например, если <T> является <Cars> я хочу печать Марка, модель, год, топливо, цвет ...

Я знаю также, что это Повсеместно в уместности, и попытаться построить уместность, чтобы решить эту проблему, но, возможно, что-то может быть не так в моем коде:

Внутри моего списка classe у меня есть:

  • T [] array;
  • Конструкторы

    // Constructores

    общественного GenericList() { MyList = новый Т [MAXLENGTH]; counter = 0; }

и еще два способа добавить, список, а также уместность T[] array:

public T[] ObjectosEmLista 
     { 
      get { return myList; } 
      set { myList = value; } 
     } 

     //public T ConsultaObjectoPorNome(string n) 
     //{ 

     //} 

     public T AddObject (T obj) 
     { 
      aux.Add(obj); 
      return obj; 
     } 





     //Listagem 
     public void List() 
     { 

      foreach (T t in myList) 
      { 
       Console.WriteLine("Marca {0} ", t); 
      } 


     } 

И в главном классе:

GenericList<Auto> autos = new GenericList<Auto>(); 
    autos.AddObject(new Auto("89-FF-42", "Citroen", "C4 1.6HDI")); 
    autos.AddObject(new Auto("19-89-LH", "Mercedes", "E230")); 
    autos.AddObject(new Auto("75-FA-45", "Skoda", "Fabia")); 

Итак, как я могу напечатать для каждого из них - знак и модель. Пожалуйста, помогите мне, это важно.

+0

если ваш 'Auto' класс (не показан), вы можете переопределить' ToString() 'так печатает все, что вы хотите. 'ObjectosEmLista', похоже, ничего не делает, что простой старый' List 'не будет делать с меньшим количеством кода. – Plutonix

ответ

0

Я думаю, что вы ищете Reflection. Попробуйте это, чтобы получить информацию о полях в вашем классе.

FieldInfo[] fields = data.GetType().GetFields(BindingFlags.Public | 
               BindingFlags.NonPublic | 
               BindingFlags.Instance); 

С этой точки легко извлечь дополнительные данные (использовать .GetValue() на поле).

foreach (var element in array) 
    foreach (var field in fields) 
     Console.WriteLine(field.Name + ": " + field.GetValue(element)); 
0

Вы можете попробовать петлю Foreach

foreach (Auto item in autos) 
{ 
    /// here you will get every item in the list and can access item.properties 
    print item.ModelName //, .each property.. 
    //or 
    print item.ToString; 
} 
+0

Не работает правильно. Ошибка: оператор foreach не может работать с переменными типа «Projecto_LP2.GenericList », потому что «Projecto_LP2.GenericList » не содержит общедоступного определения для «GetEnumerator» –

+0

Вы знаете, как я могу это решить! ? –

+0

Я работаю с genericList