如何将c#类对象传递给c++非托管代码

本文关键字:c++ 非托管代码 对象 | 更新日期: 2023-09-27 18:16:34

我有一个c#代码中的对象定义如下:

class CSObject
{
  int length;
  int width;
  IList<SubItem> Items;
  bool OnSale;     
  ItemType type; //ItemType is an enum
}
Class SubItem
{
    object AssociatedValue;
    List< Range > Highlight; // Range is another class represents a pair (0, 4)
    string Name;
    IList<SubItem> Items;
    string Title;
}

现在我们如何在c++代码中把这个传递给一个方法?

  1. 我需要在c++端创建类似的类并发送此数据并在那里进行反序列化吗?
  2. 我不需要修改c++端对象,只需要遍历它。

如何将c#类对象传递给c++非托管代码

我不知道这对你有帮助,但是我以前用过类似的东西

  public struct AccountInfo
  {
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
    public byte[] ExpirationDate;
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 12)]
    public string CustomerId;
  }