【问题标题】:OLEVariant to .Net byte[]OLEVariant 到 .Net byte[]
【发布时间】:2009-11-13 22:16:09
【问题描述】:

我有一个伪装成 .Net 对象的 OLEVariant,我通过网络从客户端组件接收到该对象。我知道内容是一个字节数组,但我不知道如何将这些内容转换为原生 .Net 字节数组 (byte[])。关于如何完成转换的任何线索?

编辑:我们回答了自己的问题。要将 OleVariant(字节数组类型)转换为 .Net byte[] 需要在对象进入 .Net Array 时将其泵入,获取 Array 的上限,创建一个上限大小的新 byte[],然后最后做一个 Array.Copy()。

【问题讨论】:

    标签: c# .net ole variant


    【解决方案1】:

    使用(byte[])myobjmyobj as byte[] 将对象转换为byte[]。

    【讨论】:

    • 有人愿意解释反对意见吗?我已经在 Delphi 和 C# 之间完成了这个确切的代码。
    • 不知道反对票的来源。无论如何,我尝试了投射,但没有成功。也许我做错了什么。我再检查一下。
    • 我刚刚去查看了这段代码——它可以追溯到 2008 年年中,但我看到的是一个 Delphi COM+ 服务器返回一个 OleVariant(不确定 Delphi 的 OleVariant 类型是否不同于 OLEVariant)和C# 字面上只有 byte[] result = controller.Result 作为 byte[]。 .NET 端使用自动生成的 COM 代理类与控制器通信,我认为它必须将结果作为 Object 类型返回。抱歉,我没有更多花絮可以提供帮助。
    • 没关系。不过,我们所做的工作有效,据他记录,将 OleVariant(字节数组类型)转换为 .Net byte[] 需要在对象进入 .Net 数组时将其泵入,并采用数组的上限,创建一个上限大小的新字节[],然后最后执行 Array.Copy()。我感谢您的回答。我将编辑问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-04
    • 2021-09-19
    • 1970-01-01
    • 2013-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多