C#:如何从对象变量中的值和类型变量中的类型获取类型变量?

标签 c#

  1. 我有一个 Object 类型的变量值。
  2. 我将其类型存储在 Type 类型的变量中。
  3. 类型只能是标准系统类型(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/

相关文章:

c# - 如何按顺序而不是并行等待 C# 任务?

c# - 我可以从 ClickOnce 部署文件中检索证书信息吗?

c# - 进度条直到100%才更新

c# - 在 C# 中使用 excel

c# - 如何将 DataGridView 内容转换为自定义对象的 List<>?

c# - 函数覆盖不调用

c# - 如何使用asp.net登录其他网站?

c# - 是否有很好的衡量单元测试完整性的方法

c# - 如何检测当前显示设置(即扩展、重复等)

c# - SceneManager 不存在 Unity 命名空间错误