从非托管C++调用C#方法,该方法传递回一个完整的对象模型
Calling C# method from unmanaged C++ which passes back a full object model
我在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
我的问题是:
- 我怎样才能把里面有一个ClassB数组的ClassA传回来
- 到目前为止,我只能从C#返回结构。我上面的例子是我真正想传回去的课程。即对数据的引用
为了澄清,非托管代码将调用托管代码。
你真的不能直接这么做。您不能从本机C++调用C#方法,反之亦然。如果你传递了一些东西,它总是一个简单的struct
,没有任何方法。
但有一些方法可以解决这个问题:
- 使用C++/CLI
- 从C#类中生成COM对象
如果您不想这样做,可以尝试通过向非托管代码传递回调或类似的方法来实现。但我认为这会相对困难和混乱。
相关文章:
- C++从另一个类访问公共静态向量的正确方法是什么
- 有没有什么方法可以使用一个函数中定义的常量变量,也可以由c++中同一程序中的其他函数使用
- 在类定义之后定义一个私有方法
- 有没有一种方法可以创建一个带有哈希表的数据库,该哈希表具有恒定时间查找功能
- 如何制作一个将函数作为参数的类方法
- 在他自己的方法中,有可能将一个对象取消引用到另一个对象吗
- 在另一个类视图中添加最多2个图表的正确方法是什么
- 检查哪个对象调用了另一个对象的对象方法
- 不能将方法返回的值用于另一个方法
- 在 c++ 中,有一种方法可以创建一个包含地图作为值的树状地图?
- std::find,返回所有找到的值的替代方法,而不仅仅是存在重复的向量的第一个值
- Qt将信号与另一个类方法连接
- C++ STD 函数运算符:有没有一种方法可以通过函数将一个向量映射到另一个向量上?
- C++有没有办法强制重写一组方法,如果其中一个方法在子类中具有重写?
- 一个模板方法,用于同时接受常量和非常量参数
- 对具有相同方法的不同类使用一个变量
- 将一个类的方法指针存储到另一个类中
- 从另一个标头中的标头调用静态方法
- 无法"this"指针传递到另一个类并在 CPP 中调用该类的任何方法
- 模板中的方法:一个有效,一个不实例化