我在检查用户输入时遇到了一些问题。我想检查输入是否是“给定”数据类型。问题出在“给定”,你可能已经猜到了:-)检查模式表和用户数据的数据类型是否匹配
我通过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");
}
}
比t不被识别为数据类型并且“is”命令使用不当。
我也试图与
foreach (DataRow row in MyDataTable.Rows){
if (! (row[Input] is ((System.Type) row["DataType"]))) ...
和许多类似的行更直接的形式给出,但似乎这个“是”命令只适用于那些直接引用的形式System.Type的,就像类型“为String ”。
怎么能解决这个问题?
在此先感谢, 彼得
这个伎俩,谢谢。 – ThatBigGuy