IDataReaderからのデータを入力する単純な値オブジェクトがあります(OracleまたはMS SQLデータベースへのクエリの結果である可能性があります)。このオブジェクトのファクトリメソッドは次のようになります。
internal static SomeClass CreateFromDataReader(IDataReader data)
{
string message = data.GetString(0);
short id = data.GetInt16(1);
DateTime dateStamp = data.GetDateTime(2);
return new SomeClass(message, id, dateStamp);
}
次に、OracleデータベースとMS SQLデータベースがその特定の列に使用するデータ型の違いに関連する問題が発生しました。Oracleでは、そのデータ型は数値ですが、MSSQLでは使用されるデータ型はsmallintです。
さて、私は次のようなことをすることでこの問題を「修正」することができました:
short id = Convert.ToInt16(data.GetValue(1));
これを行うためのより良いまたはよりエレガントな方法はありますか?