私は厳密に個人学習のためにC#のORMを書いています。私は列名がクラスのプロパティと一致するデータベースをループしています。私はその後、クラスのプロパティをループし、対応するデータベースの列値を割り当てるが、私は問題のデータベース列からの戻り値をキャストに実行しています。Reflectionを使ってORMを書くことは正しくキャストできません
var PropCollection = type.GetProperties();
foreach (PropertyInfo Property in PropCollection)
{
Property.SetValue(_t, DReader[Property.Name].ToString(),null);
}
私が予想されるエラーを取得:DReaderはちょうどSqlDataReaderのは、ループの内側に列の値を返している
Object of type 'System.String' cannot be converted to type 'System.Int32'.
を、私はそのようにキャストしないか、この値はint型であると言いますか? ?
Property.GetType();
は正しく、私は必要なタイプを知っているが、どのように私はDReader[Property.Name]
をキャストするためにそれを使用していますか?
ORMの "規則"に応じて、 '.ToString()'を削除することができますが、 'SetValue'を使用しているので、実際にキャストする必要はありません。 ? –