我有一个C#DLL,它被用作一个类来包含一个关于文件的属性列表 C#DLL是COM可见的,可以在VB6中声明和实例化 在我的vb6函数里面,我创建了对象..
Dim fileObj As New MyCSharpClass.FileProperties
我可以立即看到C#FileProperties对象可以访问的所有不同属性 fileObj。(intellisense)显示对象内可用的任何内容的下拉列表 但是当我将对象传递给函数时..
GetProperties(fileObj)
当我在GetProperties内部时
Public Function GetProperties(ByRef pfileObj As MyCSharpClass.FileProperties)
当我试图让intellisense向我展示我可以使用的选项时..
它现在确认pfileObj是我可以使用的变量,它不会出现在intellisense中
如果我尝试手动输入,再次intellisense将不会显示任何选项。
pfileObj.
有没有一种特殊的方法可以将COM interropt对象传递给它们在VB6内部未被删除的函数?
这根本不可能吗?
我试图避免创建返回字符串的函数,然后一次分配一个对象属性。
答案 0 :(得分:0)
原因是因为您需要让.NET创建一个TypeLib文件,然后您可以从VB6引用该文件。 VB6将使用它来显示intellisense以及协助VB6如何调用您的C#对象。您需要执行以下操作:
您可以在此处找到详细说明:http://www.codeproject.com/Articles/3511/Exposing-NET-Components-to-COM。这篇文章可能很旧,但大多数情况下它仍然适用于Visual Studio的现代版本。