Ваш код, безусловно, работает, если Tстрока (я ее протестировал).
Если T является что-то еще, скажем Int, вы получите это исключение.
Это Работает
List<string> result = GetListFromString<string>("abc, 123, hij");
Это не удается
List<int> resultInt = GetListFromString<int>("23, 123, 2");
Это потому, что один не может бросить или преобразовать строку в INT, например, следующий потерпит неудачу тоже:
int three = (int)"3";
The Fix
public List<T> GetListFromString<T>(string commaSplited)
{
return (from e in commaSplited.Split(',')
select (T)Convert.ChangeType(e, typeof(T))).ToList();
}
Однако все заданные строк должна быть конвертируемым к Т, например, следующий будут по-прежнему не:
List<int> resultIntFail = GetListFromString<int>("23, abc, 2");
, потому что «а» не могут быть преобразованы в типа INT.
Кроме того, T должен быть какой-то тип, который System.Convert() знает, как преобразовать из строки.
И какова ваша цель? Вы хотите, чтобы процесс мог разрешить список целых чисел, разделенных запятыми? Какими ресурсами вы собираетесь справиться? –