Я пытаюсь создать общее расширение, которое использует TryParse, чтобы проверить, является ли строка заданным типом:
public static bool Is<T>(this string input)
{
T notUsed;
return T.TryParse(input, out notUsed);
}
это не скомпилируется, так как не может разрешить символ 'TryParse'
Как я понимаю, TryParse не является частью какого-либо интерфейса.
Можно ли вообще это сделать?
Обновление:
Используя ответы ниже, я придумал:
public static bool Is<T>(this string input)
{
try
{
TypeDescriptor.GetConverter(typeof(T)).ConvertFromString(input);
}
catch
{
return false;
}
return true;
}
Это работает довольно хорошо, но я думаю, что использование исключений таким образом не подходит мне.
Update2:
Изменено для передачи типа, а не для использования обобщений:
public static bool Is(this string input, Type targetType)
{
try
{
TypeDescriptor.GetConverter(targetType).ConvertFromString(input);
return true;
}
catch
{
return false;
}
}