Использование TypeDescriptor вместо TryParse
-
13-09-2019 - |
Вопрос
Я пытаюсь воспроизвести TryParse для универсальных типов и подумал, что TypeDescriptor может дать мне то, что мне нужно.Итак, я придумал следующий тестовый пример, но он терпит неудачу, просто интересно, знает ли кто-нибудь, где я ошибаюсь.
[TestMethod]
public void Test()
{
string value = "Test";
Guid resultValue;
var result = this.TryConvert(value, out resultValue);
}
public bool TryConvert<T>(string value, out T resultValue)
{
var converter = System.ComponentModel.TypeDescriptor.GetConverter(typeof(T));
if (converter.IsValid(value))
{
resultValue = (T)converter.ConvertFrom(value);
return true;
}
resultValue = default(T);
return false;
}
Обратите внимание, я не хочу использовать блок try catch.
Ваше здоровье Энтони
Решение
Из документации MSDN для TypeConverter.IsValid
:
Тот самый
IsValid
метод используется для проверки значения внутри типа, а не для определения, может ли значение быть преобразовано в данный тип.
Таким образом, он будет проверять только тип значения, а не является ли значение правильным вводом, которое можно проанализировать.
Также смотрите этот билет на подключение.
Не связан с StackOverflow