Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在vb6中将C#COM Interopt DLL作为参数传递_C#_.net_C# 4.0_Vb6_Vb6 Migration - Fatal编程技术网

如何在vb6中将C#COM Interopt DLL作为参数传递

如何在vb6中将C#COM Interopt DLL作为参数传递,c#,.net,c#-4.0,vb6,vb6-migration,C#,.net,C# 4.0,Vb6,Vb6 Migration,我有一个C#DLL,它被用作一个类,包含一个文件属性列表。 C#DLL是COM可见的,可以在VB6中声明和实例化。 在创建对象的vb6函数中 Dim fileObj As New MyCSharpClass.FileProperties 我可以立即看到我的C#FileProperties对象可访问的所有不同属性。 fileObj.(intellisense)向我显示对象中任何可用内容的下拉列表 但是当我把我的对象传递给一个函数 GetProperties(fileObj) 当我在GetPro

我有一个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 Interopt对象传递给VB6中未包含的函数?
这根本不可能吗?

我试图避免创建返回字符串的函数,然后一次分配一个对象属性。

原因是需要.NET创建一个TypeLib文件,然后可以从VB6中引用该文件。VB6将使用它来显示intellisense,并帮助VB6调用C#对象。您需要执行以下操作:

  • 在C#中声明一个接口,该接口将公开希望VB6访问的属性/方法
  • 在类名称后使用冒号字符在C#对象中实现接口
  • 使用强名称命令行实用程序为项目创建强名称。(您可以在Visual Studio.NET的项目属性中执行此操作)
  • 使用命令行实用程序regasm.exe创建必要的TypeLib文件
  • 使用gacutil将新创建的tlb文件添加到GAC
  • 从VB6创建对新创建的.tlb文件的引用(项目>引用) 您可以在此处找到详细说明:。这篇文章可能很旧,但在大多数情况下,它仍然适用于VisualStudio的现代版本