2016-01-21 1 views
0
 IMS_ProductController pc = new IMS_ProductController(); 
     IList<IMS_Product> newrec= new List<IMS_Product>(); 
     newrec.Add(new IMS_Product() 
     { 
      Name = "Bobo", 
      Description = "Some desc", 
      Url = "http", 
      ProductInfoUrl = "http" 
     }) 
     IMS_Product ip = new IMS_Product(); 
     IEnumerator<IMS_Product> myprod = newrec.GetEnumerator(); 
     myprod.MoveNext(); 
     foreach (var prop in ip.GetType().GetProperties()) 
     { 
      Console.WriteLine(prop.Name); //this works. Returns "Name","Description","URL","ProductInfoURL" 
      Console.WriteLine(myprod.Current.Name); //This works. Returns "Bobo" each time 
      Console.WriteLine(myprod.Current[prop.Name]); //this does NOT work. IList is not indexable. 
     } 

Как мне сделать строку 3 в работе foreach? Что мне нужно сделать, чтобы сделать индексный список/массив/независимо?Сделать индексный IList

Спасибо! Chris

+0

Что вы пытаетесь сделать в 3-й строке? –

+3

Почему вы выполняете итерирование списка вручную по сравнению с использованием 'foreach' в самом списке? –

+0

Я пытаюсь вернуть «Бобо» - значение «Имя» в моем классе. – Chris

ответ

1

Я думаю, что вам нужно использовать GetValue method, чтобы сделать что-то вроде этого:

//Loop through objects 
foreach(IMS_Product prod in newrec) 
{ 
    //Loop through properties 
    foreach (var prop in typeof(IMS_Product).GetProperties()) 
    { 
     //Print property name 
     Console.WriteLine(prop.Name); 

     //Print property value 
     Console.WriteLine(prop.GetValue(prod)); 
    } 
} 
+0

Это порождает ошибки, потому что myprod не индексируется, – Chris

+0

@ Крис, я не совсем уверен, что вы имеете в виду. 'prod' - это просто переменная цикла здесь. Вы проверили этот код? –

+0

Подождите ... Я пропустил первый foreach ... позвольте мне попробовать ... – Chris

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