在VB6中创建对象以与用c#编写的dll(tlb)中的对象一起使用吗?

时间:2019-01-14 19:32:30

标签: c# vb6 vb6-migration

因此,我在vb6中的知识非常有限,但由于这是旧代码,因此对此是必需的。

我创建了一个dll,在c#中带有一个对象(字符串类)。

在vb6中利用此功能的最佳方法是什么?有没有一种方法可以将其公开为接口,或在vb6中创建对象以进行匹配?

我已经搜索了MSDN,但是有关该主题的内容非常有限,似乎不是一个常见问题。

通常,我通过接口公开所有内容,但是诸如:

class myClass (string x, string y, string z);

不起作用(界面不能包含字段)。

我也尝试过

myClass(string x, string y, string z); 

我得到一个错误方法的方法必须具有返回类型。

最近我尝试过

myClass iClass(string x, string y, string z);

返回a的未实现接口成员。

myClass

public string x {get;set;}
public string y {get;set;}
public string z {get;set;}

我无法通过搜索找到任何措辞准确的问题(也许我的措辞在标题中不正确,因为我的vb6知识还是最少的)。

所有引用的代码均来自c#dll。

1 个答案:

答案 0 :(得分:0)

您可以为您的类提供一个COM可调用的包装器,VB6可以与该包装器进行互操作。

这是您的类,其中包含可从VB6调用的COM调用包装器:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Runtime.InteropServices;

namespace CCW
{
    [ClassInterface(ClassInterfaceType.AutoDual)]
    [ComVisible(true)]
    public class myClass
    {
        public string x { get; set; }
        public string y { get; set; }
        public string z { get; set; }
    }
}