【问题标题】:How to copy or deep clone vb6 comm+ proxy object in c# class?如何在 c# 类中复制或深度克隆 vb6 comm+ 代理对象?
【发布时间】:2020-10-01 19:40:11
【问题描述】:

我在 vb6 dll 中内置了 comm+ 对象,我正在尝试读取 vb6 中内置的 comm+ 代理对象以映射到 c# 类对象中(获取system._ComObject

我在这里添加了 vb6 dll 来引用,vb6 dll 是 COM 注册的,我可以使用 object.property 名称访问属性,但我无法强制转换或克隆 /Map 对象。

我将 system._ComObject 作为值,我有很多接口,我可以通过创建类进行映射,但是对于许多接口,很难从 vb6 接口在 c# 应用程序中创建类以进行映射

如果有任何替代方法我可以直接访问那些会更好,一些我可以看到对象的值而不是system._Comobject

理想情况下,我想对 comm+ 代理 vb6 对象使用没有反射的 deepclone?

【问题讨论】:

  • 到目前为止你尝试过什么?怎么了?能说详细点吗?
  • 仅供参考,我将您的评论编辑到问题中,这是您将来应该做的。鼓励编辑问题以根据需要进行改进。
  • 您能否显示您正在创建的代码,然后尝试访问 COM(不是“comm”)对象的属性?

标签: c# .net vb6 vb6-migration


【解决方案1】:

我知道的唯一方法是将 VB6 COM 对象序列化/反序列化为一个新对象。

使用 JSON 作为中介的一种方法是:https://stackoverflow.com/a/52412110/3195477

现在,大概 JSON 序列化程序正在使用一些反射调用来检查对象并找出如何序列化它们。这意味着您可以仅重构该部分逻辑以获得更“纯”的方法。 (或者也许有人已经这样做了)。

另请注意,我指出的答案提到必须使用正确的 COM“代理”对象。因此,如果您进行更多调查,则可能在 correct 对象上使用DeepCloner 之类的工具也可以工作。但我没试过。

【讨论】:

    猜你喜欢
    • 2015-01-08
    • 2010-10-15
    • 2010-09-09
    • 2017-02-23
    • 1970-01-01
    • 2019-08-09
    • 1970-01-01
    相关资源
    最近更新 更多