C++/CLI 转换非托管本机 C++列表到托管 C++/CLI 列表
我有一个包含结构的 C++ 列表。我的 C++/CLI 项目使用本机 C++。我想将托管列表返回到我的 C# 项目。如何将我的 C++ 列表转换为托管列表?
I have a C++ list which contains a struct. My C++/CLI project consumes the native C++. I would like to return a managed list to my C# project. How can I convert my C++ list into a managed list?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
首先,您需要一个
ref class
,它充当每个项目的struct
的包装器。您可以将指向struct
的指针存储为ref class
中的字段。我们将其称为StructWrapper
。然后你需要一些东西来代表这个列表。最灵活的方法是公开
IEnumerable
。要么编写自己的实现(不像听起来那么糟糕),要么只是将所有项目加载到List
中并返回。First you need a
ref class
that acts as a wrapper around thestruct
for each item. You can store a pointer to thestruct
as a field in theref class
. Let's call itStructWrapper
.Then you need something to represent the list. The most flexible way to do that is to expose an
IEnumerable<StructWrapper>
. Either write your own implementation (not as bad as it sounds) or just load all the items into aList<StructWrapper>
and return that.