метод мутации отправлен в неизменный объект

Вам нужно перейти через object при кастеризации к родовому типу:

return (T)(object) v.ToString()

и

return (T)(object) v;

Я бы использовал is, а не ловил InvalidCastException.

Подробнее о том, почему это необходимо, см. в недавнем блоге Эрика Липперта .

В частности:

Поскольку компилятор знает, что единственный способ, которым это преобразование может быть успешным, - это U - bool, но U может быть чем угодно! Компилятор предполагает, что большую часть времени U не будет создан с bool, и поэтому этот код почти наверняка является ошибкой, и компилятор доводит этот факт до вашего сведения.

blockquote >

(Подставить T для U и string для bool ...)

13
задан James Webster 10 August 2015 в 08:28
поделиться