Просто проверяю Convert.ToUInt32(object)
... да, все работает нормально:
using System;
class Test
{
static void Main()
{
Check((byte)10);
Check((short)10);
Check((ushort)10);
Check((int)10);
Check((uint)10);
}
static void Check(object o)
{
Console.WriteLine("Type {0} converted to UInt32: {1}",
o.GetType().Name, Convert.ToUInt32(o));
}
}
Другими словами, ваш код может быть:
object x = reader.GetValue(i);
uint k = Convert.ToUInt32(x);
if (k == 42) { ... }
В качестве альтернативы, учитывая, что все uint
представимы как длинные, если вы используете устройство для чтения данных, вы можете попробовать reader.GetInt64(i)
? Я не знаю, будет ли конвертация сделана для вас, но, вероятно, стоит попробовать.