为什么仅C#应用程序需要BStrWrapper?

时间:2018-12-17 20:03:48

标签: c# com solidworks

在SOLIDWORKS API文档中明确声明,为了将.NET字符串数组封送回SOLIDWORKS,您必须使用BStrWrapper类。它还针对C#应用程序声明了这一点,而没有提及VB.NET?有什么理由吗?谢谢。

Source

enter image description here

1 个答案:

答案 0 :(得分:1)

我对VB.net不太熟悉,但是我认为这是因为C#和VB.NET中的转换规则不同。 在下面,您引用的方法看起来(在C ++中):

virtual HRESULT __stdcall raw_RemoveExternalDocuments (
        /*[in]*/ VARIANT DocumentNames,
        /*[out,retval]*/ VARIANT_BOOL * Retval ) = 0;

或更美观:

VARIANT_BOOL RemoveExternalDocuments (const _variant_t & DocumentNames );

C#需要使用BStrWrapper,因为它会将字符串封送为VARIANT see MS doc。而且看起来VB.NET可以隐式完成它。