2012-02-21 63 views
2

我有类似于C#下面的内容:调用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与ClassB传递给其中。

我的问题是:

  1. 我怎样才能传回其中的ClassA ClassB的一个里面阵列?
  2. 到目前为止,我只能够从C#中传回结构。我上面的例子是我真正想要传回的类。即对数据的引用。

为了澄清,非托管代码将调用托管代码。

回答

0

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

但也有一些方法可以解决的是:

  1. 使用C++/CLI。
  2. 使COM对象脱离C#类。

如果你不想这样做,你可以通过传递回调到非托管代码或类似的东西来做到这一点。但我认为这会比较困难和混乱。

+0

我知道你不能真的调用C#方法,但你可以使用COM调用.net代码,这是相同的概念。我很高兴从我的C#类中创建COM对象,但我可以保持原始文章中提到的相同结构吗?谢谢。 – ahallan 2012-02-21 17:28:32