DataRow 値をディクショナリ (columnName、expectedColumnValue) として提供される期待値と比較するデータベース テスト ユーティリティ コードを作成しています。
多くの型で問題なく動作しますが、byte と short の場合、値を Int32 に変換する変換コードを追加する必要がありました。
2 つの質問:
このコードをより良くする方法、つまり変換を回避する方法についてのアイデアはありますか? decimal と float の場合、decimal/float 値として明示的に宣言されているため、機能しているようです。ロングも問題なく動作します。
他に方法がない場合、short と byte 以外に心配する必要がある型はありますか?
以下のデモコード:
var table = new DataTable();
table.Columns.Add(new DataColumn("CarrierId", typeof(byte)));
table.Columns.Add(new DataColumn("NotationId", typeof(short)));
var row = table.NewRow();
row[0] = 5;
row[1] = 123;
table.Rows.Add(row);
var expected = new Dictionary<string, object>
{
{"CarrierId", 5},
{"NotationId", 123},
};
foreach (var entry in expected)
{
var value = row[entry.Key];
var expectedValue = entry.Value;
if (value is short || value is byte)
value = Convert.ToInt32(value);
Console.WriteLine();
Console.WriteLine(String.Format("Not converted: {0}", row[entry.Key].Equals(entry.Value)));
Console.WriteLine(String.Format("Converted (if applicable): {0}", value.Equals(expectedValue)));
}