Как изменить значения свойств в IList <T> - PullRequest
0 голосов
/ 31 декабря 2018
 Public class temp()
 {
     int code;
     string name;
  }

  IList<temp> res="assume is has a list of values"

  public void modify<T>(ref Ilist<T> list)
  {
       list[0].code=0;
       list[0].name="";
  }

я получаю сообщение об ошибке "список не содержит определения для кода / имени".есть ли способ изменить значения в IList

1 Ответ

0 голосов
/ 31 декабря 2018

Ваш текущий пример не имеет особого смысла.

Но один из способов - ограничить параметр универсального типа вашего метода некоторым интерфейсом, например:

public interface ITemp
{
   int code { get; set; }
   string name {get; set;}
}

, и ваши конкретные типы будут наследоваться.это с некоторой реализацией

public class Temp : ITemp
{
     // implementation
}

, и тогда вы можете написать универсальный метод:

public void modify<T>(ref IList<T> list) where T : ITemp
{
   list[0].code=0;
   list[0].name="";
}

Но это должно быть сделано только тогда, когда у вас есть несколько классов с некоторыми общими свойствами, и вам нужноуниверсальный метод для работы над ними.

...