ユーザー入力の確認に少し問題があります。入力が「指定された」データ型であるかどうかを確認したいと思います。あなたが推測したかもしれないように、問題は「与えられた」にあります:-)
Datareaderを介してSQLschematableを取得します。プログラムは任意の外部データベースと連携できる必要があるため、データベースは交換できます。したがって、私はそれについて他に何も知りません。スキーマテーブルには、データベーステーブルのすべての列が一覧表示されます。これには、データベースの列データ型に対応する.Netデータ型がリストされている列「DataType」が含まれています。
ユーザーは、datagridviewの各列にデータ入力を指定できます。つまり、ユーザーにはスキーマテーブルと編集可能な追加の列が与えられます。
次に、指定されたユーザー入力が.Netデータ型と一致するかどうかを確認します。通常、私は次のようなものを使用してこれをチェックします
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"] ))) ...
および多くの同様の行ですが、この「is」コマンドは、「isString」のようにSystem.Typeから直接参照される型でのみ機能するようです。
どうすればこれを解決できますか?
よろしくお願いします、ピーター