2

我正在使用从 C# 调用 C 的 InteralCall 方法,类似于此处给出的示例,但我传入了一个 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# 的类型转换为 MonoClass* 的东西。

static void Sample (MonoObject* t) 
        {
                // I want to convert the MonoObject* argument to a MonoClass*
        }

我的代码涉及更多,但这说明了我正在尝试做的事情。我可以创建一个虚拟对象并传递它,然后使用 mono_object_get_class() 获取类,但我很好奇是否可以使用 Type.

谢谢!

4

1 回答 1

4

表示 C# System.Type 的 C 类型是 MonoReflectionType*(仍然是 MonoObject*)。

要获得 MonoType*,您可以在调用 mono_reflection_type_get_type () 的大部分嵌入 API 中使用。

MonoType* 指针类似于 C# 领域中的 TypeHandle。

于 2013-10-22T12:39:04.753 回答