- 我有一个
Object
类型的变量值。 - 我将其类型存储在
Type
类型的变量中。 - 类型只能是标准系统类型(Int32、Int64 等)
问。我想获取表示该值的字节数组。我正在尝试使用 BitConverter.GetBytes 来实现此目的,但它需要类型变量。有没有办法动态获取类型变量,使其具有值并在单独的变量中键入?
谢谢。
最佳答案
如果您不想在每种类型上切换
并调用适当的方法(这是最快的方法),您可以使用反射,尽管速度会慢一些:
byte[] GetBytes(object obj)
{
var type = obj.GetType();
return (byte[])typeof(BitConverter)
.GetMethods(BindingFlags.Public | BindingFlags.Static)
.Single(m => m.Name == "GetBytes" && m.GetParameters().Single().ParameterType == type)
.Invoke(null, new object[] { obj });
}
调用 GetBytes((short)12345)
会生成 new byte[] { 0x39 ,0x30 }
。
关于C#:如何从对象变量中的值和类型变量中的类型获取类型变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6495955/