如何调用interop传递的对象的功能?

时间:2012-09-02 00:08:42

标签: c# .net vb6 interop com-interop

我有以下代码模式:

[VB6] 
Dim objNetDllObject As New NetDllObject 
objNetDllObject.PassVb6Form(MyForm) 
objNetDllObject.ShowForm  

[C#] 
object Vb6Form;  
private void PassVb6Form(object form) { Vb6Form = form; } 
private void button1_Click(object sender, EventArgs e) { Vb6Form.Show(); }

问题是C#编译器不喜欢Vb6Form.Show()语句,因为Show()不是object的函数,这是真的。我该如何编译这段代码?

1 个答案:

答案 0 :(得分:1)

我会像这样解决问题(因为VB6引用了NetDllObject,我猜它有引用并且可以实现其他对象)

在.Net中公开您希望VB6接口实现的接口:

public interface IVB6Form
{
     void Show();
}

在VB6的新类中实现它:

Implements IVB6Form

Public myForm as Form

Public Sub IVB6Form_Show()
    myForm.Show()  
End Form

更改C#签名以使用它而不是对象引用:

private void PassVb6Form(IVB6Form form) { Vb6Form = form; }