我正在使用从 C# 调用 C 的 InteralCall 方法,类似于给出的示例 here但我传入一个 Type 对象。
class Hello {
[MethodImplAttribute(MethodImplOptions.InternalCall)]
extern static void Sample (Type t);
}
因此,在我的 C 代码中,我通常使用 MonoObject 来接收 C# 对象。我想将其转换或转换为 MonoClass* 或 MonoType*,这样我就可以稍后开始调用 mono_object_new() 并创建许多对象。当然,如果我使用 mono_object_get_class 我会得到实际 Type 类的类。我需要将 C# 的 Type 转换为 MonoClass* 的东西。
static void Sample (MonoObject* t)
{
// I want to convert the MonoObject* argument to a MonoClass*
}
我的代码有点复杂,但这说明了我正在尝试做的事情。我可以创建一个虚拟对象并传递它,并使用 mono_object_get_class() 获取该类,但我很好奇是否可以使用 Type 来做到这一点。
谢谢!
最佳答案
表示 C# System.Type 的 C 类型是 MonoReflectionType*(仍然是 MonoObject*)。
要获取 MonoType*,您可以在嵌入 API 的大部分其余部分中调用 mono_reflection_type_get_type ()。
MonoType* 指针类似于 C# 领域中的 TypeHandle。
关于mono - MonoType 与 C# 的 Type 相关吗(如 typeof),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19507383/