2

我在 C# 中有类似于以下内容的内容:

    public class ClassA
    {
        int Id  { get; set; }
        ClassB[] ClassBItems  { get; set; }    
    }  

    public class ClassB
    {
        int SomeOtherId {get;set;}
    }

我想将此对象模型传递给非托管 C++。即从非托管C++ 代码调用,例如'GetClassA() : ClassA'。

到目前为止,我已经设法将单个对象或对象数组从托管 C# 传递到非托管 C++(使用 COM/CCW),但还没有通过其中包含 ClassB 的 ClassA。

我的问题是:

  1. 如何将 ClassA 传回其中的 ClassB 数组?
  2. 到目前为止,我只能从 C# 传回结构。我上面的例子是我真正想要传回的类。即对数据的引用。

澄清一下,非托管代码将调用托管代码。

4

1 回答 1

0

你不能直接这样做。您不能从本机 C++ 调用 C# 方法,反之亦然。如果你传递一些东西,它总是只是一个简单的 C struct,没有任何方法。

但是有一些方法可以解决这个问题:

  1. 使用 C++/CLI。
  2. 从 C# 类中创建 COM 对象。

如果您不想这样做,您可以尝试通过将回调传递给非托管代码或类似的方式来实现。但我认为这会相对困难和混乱。

于 2012-02-21T16:56:41.787 回答