У меня небольшая проблема с проверкой пользовательского ввода. Я хочу проверить, относится ли ввод к «заданному» типу данных. Проблема в "данности", как вы могли догадаться :-)
Я получаю SQLschematable через Datareader. База данных может быть заменена, так как программа должна уметь работать с любой сторонней базой данных. Поэтому я больше ничего об этом не знаю. В схеме перечислены все столбцы из таблицы базы данных. Он содержит столбец «Тип данных», в котором перечислены типы данных .Net, соответствующие типам данных столбцов баз данных.
Пользователь может указать ввод данных для каждого столбца в datagridview. То есть: пользователю предоставляется схематический и редактируемый дополнительный столбец.
Теперь я хочу проверить, соответствует ли данный пользовательский ввод типу данных .Net. Обычно я бы проверил это, используя что-то вроде
Input is String
or
String test = Input as String;
if (test = null) ....
но проблема заключается в создании типа данных (т.е. строки)
если я сделаю что-то вроде этого:
foreach (DataRow row in MyDataTable.Rows){
System.Type t = (System.Type) row["DataType"];
if (! ( ((Object) row["Input"]) is t ) ){
MessageBox.Show("Error");
}
}
чем t не распознается как тип данных и команда «is» не используется должным образом.
Я также попробовал более прямой подход с
foreach (DataRow row in MyDataTable.Rows){
if ( ! (row[Input] is ((System.Type) row["DataType"] ))) ...
и много подобных строк, но кажется, что эта команда "is" работает только с типами, на которые напрямую ссылаются из System.Type, например, "is String".
Как это можно решить?
заранее спасибо, Питер