繁体   English   中英

从 .NET interop 传递 vb6 object 类型参数 byref 导致类型不匹配

[英]Passing vb6 object type parameter byref from .NET interop causes Type Mismatch

我不太了解 Com Plus .NET 中的互操作服务 - 我让 .NET 完成所有肮脏的工作,我祈祷它会起作用。 好吧,现在我被困住了。

我在我的 VS 2010 C# 程序中引用了 COM DLL 和 VB6。 这是我正在创建的发票。

我实例化了一个 object:

UIInvoice Invoice = new CUIInvoice();

然后我设置一些 invoice header 属性:

Invoice.set_InvoiceType("VO");
Invoice.set_InvoiceTypeID(2);

现在,我想创建一些发票明细行,这是通过调用发票的子 object 的添加方法来实现的:

Invoice.InvoiceDetails.Add("StringParam1", "StringParam2", Invoice);

function调用的第三个参数定义在我的VB6添加function为:

ByRef Parent As Object

当我运行我的 .NET 程序时,当我点击添加行时出现“类型不匹配”错误。

任何人都可以用简单的方式建议我可以让它工作的方法吗?

我的建议是不要乱用 COM,而是将 VB6 代码迁移到 Visual Basic.NET。 使用 C# 来回编组对象的问题会少得多。如果此 object 与其他遗留应用程序共享,则您可以创建一个 COM 包装器来保持您的遗留兼容性。 显然,您需要根据您的业务需求权衡这一点。

如果您拥有 VB6 源,那么我建议将 Add 的定义更改为 ByVal 而不是 ByRef。 几乎没有理由在 VB6 中使用 ByRef object 引用,并且从我从您的代码中收集到的一点点,您不需要在域对象中关联 par.net/child 关系。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM