我在检查用户输入时遇到了一点问题。我想检查输入是否属于“给定”数据类型。正如您可能已经猜到的那样,问题出在“给定”中:-)
我通过 Datareader 获得了一个 SQLschematable。数据库可以交换,因为程序应该能够与任何外国数据库一起工作。因此,我对此一无所知。架构表列出了数据库表中的所有列。它包含一列“DataType”,其中列出了与数据库列数据类型对应的 .Net 数据类型。
用户可以为 datagridview 中的每一列指定一个数据输入。也就是说:给用户一个模式表和一个可编辑的额外列。
现在我想检查给定的用户输入是否与 .Net 数据类型匹配。Normaly 我会通过使用类似的东西来检查这个
Input is String
或者
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");
}
}
than t 未被识别为数据类型,并且“is”命令未正确使用。
我还尝试了更直接的方法
foreach (DataRow row in MyDataTable.Rows){
if ( ! (row[Input] is ((System.Type) row["DataType"] ))) ...
和许多类似的行,但似乎这个“is”命令只适用于直接从 System.Type 引用的类型,比如“is String”。
怎么能解决这个问题?
在此先感谢,彼得