如何在.NET中编组LPSTR**?

use*_*478 5 .net c# marshalling

我有一个未损坏的COM对象的方法,我正在尝试编组:

STDMETHOD(SomeMethod)(LPSTR** items, INT* numOfItems) = 0;
Run Code Online (Sandbox Code Playgroud)

但我无法找出正确的方法来整理LPSTR**物品.它应该是一个项目列表.但是,如果尝试做这样的事情:

[PreserveSig] 
int SomeMethod([MarshalAs(UnmanagedType.LPStr)]ref StringBuilder items, ref uint numOfItems);
Run Code Online (Sandbox Code Playgroud)

我只得到第一个项目的第一个字母而没有别的.

如何正确编组LPSTR**变量?

arb*_*ter 0

我现在无法检查,但签名应该如下所示:

[PreserveSig]
int SomeMethod(
    [MarshalAs(UnmanagedType.LPArray, ArraySubType = UnmanagedType.LPStr, SizeParamIndex = 1)] out string[] items,
    out int numOfItems);
Run Code Online (Sandbox Code Playgroud)

当然,这没有帮助,您始终可以通过Marshal类执行手动编组(如 Sinatr 建议的那样)。