c# - C#中_bstr_t的等价物是什么

标签 c# c++ .net com-interop

我正在从事一个需要将 C++ 代码转换为 C# 的项目。

我在代码中遇到了 _bstr_t 我想知道 C# 中的等效项。

最佳答案

_bstr_t classBSTR type 的包装器.这是 OLE Automation 中的一个字符串这是跨语言标准化的。

也就是说,.NET 中的等效类型是 System.String .

关键是在与之交互时(或在 .NET 代码中为 COM 互操作定义接口(interface)),您需要使用 MarshalAsAttribute值来自 UnmanagedType enumeration UnmanagedType.BStr,像这样:

// This is on an interface that is in unmanaged code.
public void DoSomething([MarshalAs(UnmanagedType.BStr] string myString);

请注意,如果您的类实际上在 COM 接口(interface)中公开了 _bstr_t,那么您应该将其更改为公开 BSTR_bstr_t 是一个帮助程序类,并不意味着跨接口(interface)边界公开。 BSTR 用于此,_bstr_t 上的方法用于处理 BSTR 实例的分配和使用。

关于c# - C#中_bstr_t的等价物是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13256440/

相关文章:

c# - 字段更改时,MVVM 对象触发属性更改事件

c++ - 生成具有迭代器行为的仿函数

c++ - 不允许定义一个类的多个实例

c# - 无法安装 nuget 包 unity 2

c# - 最新的 Reactive Extension (Rx) 教程

.net - Ninject, "Abstract Factory"模式和运行时条件解析

c# - 直接在C#中设置property的属性

c# - 不明确的通用限制 T :class vs T:struct

c# - 从 richtextbox 保存格式化文本

c++ - operator void*() 转换仍然是 C++ 库的一部分吗?