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# の Type を 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 に答える