API数组返回类型

时间:2011-01-21 04:56:13

标签: c# arrays api

我正在开发一个现有的API,由一些不再在我公司的开发人员编写。据我了解,API实现为一个DLL,它通过套接字与localhost上的服务器程序进行通信。所以它来回Marshals对象。我必须为此API添加一些方法。有许多现有方法返回可用名称列表(所有字符串)。但是,它们都作为对象数组返回。代码如下:

[return: MarshalAs( UnmanagedType.SafeArray, SafeArraySubType = VarEnum.VT_VARIANT )]
object[] GetAvailableNames( );

我不确定为什么要这样做:为什么不返回一个字符串数组?有没有人有任何想法?

1 个答案:

答案 0 :(得分:3)

这有点推测,但看起来本机API实际上返回了一个安全的变体对象数组,而不是一个字符串数组。我认为编组安全数组变种的正确方法确实是作为一个字符串数组来实现的。即使它只包含字符串,任何类型都可以放入变体槽中。

如果您可以访问代码的两端(托管和本机),那么可以更好地切换它们以直接与字符串数组进行通信。