我想找到一个优雅的解决方案来解决我的问题。 我想在String ex中定义的类型值中进行动态字节转换。 “Int32”,“Byte”,“UInt16”派生自xml文件。
这是一个例子。是否可以自动转换以删除Switch Case?
public static void Main(string[] args)
{
byte[] data = {77,4}; // (256 * 4) + 77 --> 1101
object value = ToType(data, "Unt16");
Console.WriteLine(value);
}
unsafe public static dynamic ToType(byte[] data, String typeStr)
{
fixed (byte* p = &data[0])
{
switch(typeStr)
{
case "Int16":
return *((Int16*)p);
case "Unt16":
return *((UInt16*)p);
case "Int32":
return *((Int32*)p);
case "... ...":
....
default:
return null;
}
}
}