У меня есть эта статическая функция здесь, которая решает тип переданного параметра и вызывает на нем встроенный метод ToString()
, если он является общим или вызывает предопределенный пользовательский посредник распечатать его полное содержимое, если оно может быть перечислино. Вот что я до сих пор;Переменная, определяемая как параметр в функции типа T undefined C#
public static String ToStringDecider<T> (T value)
{
Type t = typeof(value);
if (t.IsSubclassOf (Array) || t.IsSubclassOf (IList))
return ToString_List (value);
else if (t.IsSubclassOf (IEnumerable))
return ToString_Enumerable (value);
else if (t.IsSubclassOf (IDictionary))
return ToString_Dictionary (value);
else
return value.ToString();
}
Однако первое упоминание переменной value
в строке 3 приходит с синтаксической ошибки с указанием "The name 'value' does not exist in the current context."
Может кто-нибудь объяснить, почему это происходит?
Вы попробовали 'value.GetType()'? – chouaib
Почему не 'typeof()' достаточно? – Maurdekye
Не должно быть typeof (T)? – Tuco