Общий TryParseC#

Место общения программистов C#
Ответить
Anonymous
 Общий TryParse

Сообщение Anonymous »

Я пытаюсь создать универсальное расширение, которое использует TryParse для проверки принадлежности строки заданному типу:

public static bool Is(this string input)
{
T notUsed;
return T.TryParse(input, out notUsed);
}


это не скомпилируется, поскольку не может разрешить символ «TryParse».

Насколько я понимаю, «TryParse» не является частью какого-либо интерфейса.

Можно ли это вообще сделать?

Обновление:

Используя ответы ниже, я получил:

public static bool Is(this string input)
{
try
{
TypeDescriptor.GetConverter(typeof(T)).ConvertFromString(input);
}
catch
{
return false;
}

return true;
}


Это работает довольно хорошо, но я думаю, что использование исключений таким образом мне кажется неправильным.

Обновление 2:

Изменено для передачи типа вместо использования универсальных шаблонов:

public static bool Is(this string input, Type targetType)
{
try
{
TypeDescriptor.GetConverter(targetType).ConvertFromString(input);
return true;
}
catch
{
return false;
}
}


Подробнее здесь: https://stackoverflow.com/questions/296 ... c-tryparse
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»