首页 / 知识
从.NET向COM公开嵌套数组
2023-04-15 19:44:00

Exposing nested arrays to COM from .NET
我在.NET(C#)中有一个返回
此警告导致所讨论的方法未导出到生成的类型库中。 有人告诉我,可以使用Variant作为COM返回类型,然后在COM客户端上进行强制转换等。 对于此特定的程序集,目标客户群体是VB6。 但是,您实际上如何在.NET端执行此操作? 注意:我有一个现有的旧式DLL(及其导出的类型库),其返回类型为Variant,但是此DLL(和.tlb)是使用.NET以前的旧式工具生成的,因此无法使用它们。 如果程序集是用VB.NET编写的,那对您有帮助吗? 即使返回一个对象(映射到COM Interop中的Variant),也不能解决您的问题。 VB将能够"握住"它并"传递"它,但是它将无法执行任何操作。 从技术上讲,VB中没有完全等效的string [] []。但是,如果数组不是"锯齿状的"(也就是说,所有子数组的长度都相同),则应该可以将二维数组用作返回类型。 COM Interop应该能够进行翻译。
方法是正式返回对象(类似于VB的Variant)还是字符串[,](类似于VB中的字符串数组),这在某种程度上并不重要。 String数组是更好的返回值,但不是必需的。 如果数组呈锯齿状,那么您将不得不提出另一种方法。例如,您可以选择使返回的2D数组与最大的子数组一样大,然后将长度信息传递到单独的[out] int []参数中,以便VB可以知道使用了哪些元素。 C#中的变体等效于System.Object。因此,您可能想尝试将结果转换返回给对象,并将其作为另一种形式在另一侧取回。 VB没有C#缺少的任何功能,因此我怀疑如果.NET端用VB编写会更好或更容易。 |
最新内容
相关内容
查看linux类型命令?
查看linux类型命令?,系统,信息,命令,状态,数据,数字,情况,地址,类型,文件,linux查看系统命令是什么1、linux怎么查看系统版本呢,下面就让我们来linux删除类型命令?
linux删除类型命令?,系统,档案,命令,文件,名称,环境,数据,不了,目录,文件夹,关于linux的删除命令命令格式:rm [选项] 文件… 命令功能:删除一个linux使用命令的方法?
linux使用命令的方法?,系统,信息,工具,标准,数据,命令,左下角,目录,文件夹,图标,linux的cd命令的使用方法1、cd ~:回到用户家目录。注:这得看你查看linux库类型命令?
查看linux库类型命令?,系统,工作,信息,状态,电脑,命令,工具,代码,地址,发行,如何查看Linux上程序或进程用到的库查看程序依赖的动态库:readelflinux网卡类型命令?
linux网卡类型命令?,网络,系统,地址,信息,设备,状态,服务,名称,名字,网卡,如何配置Linux网卡配置网卡地址:点击 网络(K) 按钮进行配置网络 选择linux查看命令类型用?
linux查看命令类型用?,信息,系统,情况,命令,实时,工作,设备,电脑,文件,类型,如何区分linux文件类型?1、普通文件类型 Linux中最多的一种文件类linux创建数组命令?
linux创建数组命令?,地址,工作,系统,信息,命令,代码,目录,情况,标准,文件,Linux命令linux系统常用操作命令如下:ls:全拼list,功能是列出目录的内linux命令三种类型?
linux命令三种类型?,工作,地址,系统,标准,时间,管理,命令,目录,信息,文件,linux常用命令linux常用命令:查看内核版本:uname-a。图形界面:init5或linux命令输入方法?
linux命令输入方法?,系统,电脑,密码,管理,地址,命令,网站,工具,首开,位置,linux终端输入~怎么弄中间在电脑上打开需要的Word文件进入。进入到文Python中什么是反射?使用方法有哪
Python中什么是反射?使用方法有哪些?,信息,培训,状态,术语,检测,反射,属性,对象,字符串,方法,反射这个术语在很多语言中都存在,并且存在大量的Python3实现旋转数组的3种算法
Python3实现旋转数组的3种算法,位置,代码,时间,培训,算法,数组,解法,结果,长度,索引,下面是Python3实现的旋转数组的3种算法。一、题目给定一Python中有哪些方法可以解压文件?
Python中有哪些方法可以解压文件?,工具,系统,工作,培训,文件,文件夹,方法,窗体,不同于,以下内容,在Python学习和日常使用中,很容易造成文件过大