Я пытаюсь использовать System.ComponentModel.TypeConverter для приведения множества System.Strings к различным типам. Эти строки могут иметь или не иметь допустимый формат для TypeConverter, поэтому я хотел бы найти способ проверить их действительность перед попыткой преобразования типа (чтобы избежать необходимости полагаться на перехват System.FormatException для указания того, что String не в правильном формате).
Отлично, вот почему TypeConverter имеет метод IsValid (), верно? Ну, я сталкиваюсь с проблемой, когда IsValid () возвращает true, но когда я вызываю ConvertFromString (), он генерирует исключение. Вот некоторый код для воспроизведения проблемы:
System.ComponentModel.DateTimeConverter DateConversion =
new System.ComponentModel.DateTimeConverter();
String TheNumberZero = "0";
if (DateConversion.IsValid(TheNumberZero))
Console.WriteLine(DateConversion.
ConvertFromString(TheNumberZero).ToString());
else
Console.WriteLine("Invalid.");
Когда я запускаю это, строка
Console.WriteLine(DateConversion.
ConvertFromString(TheNumberZero).ToString());
создает исключение System.FromatException с сообщением
0 is not a valid value for DateTime.
Какова цель метода IsValid (), если не проверять входные данные преобразования перед попыткой преобразования типа? Есть ли какой-нибудь способ проверить правильность строки, кроме необходимости перехватывать FormatException?