该_bstr_t班是为一个包装BSTR类型.这是OLE自动化中的一个字符串,它跨语言标准化.
也就是说,.NET中的等价类型是System.String.
关键是在与它交互时(或者在.NET代码中定义COM互操作的接口)时,你需要使用MarshalAsAttribute带UnmanagedType枚举的值UnmanagedType.BStr,如下所示:
// This is on an interface that is in unmanaged code.
public void DoSomething([MarshalAs(UnmanagedType.BStr] string myString);
Run Code Online (Sandbox Code Playgroud)
请注意,如果您的类实际上是_bstr_t在COM接口中公开,那么您应该将其更改为公开BSTR; _bstr_t是一个辅助类,不应跨接口边界公开.的BSTR是该和方法_bstr_t是处理的分配和使用BSTR情况.