Я пытаюсь получить Methodtable для экземпляров массива, то есть int [], long [] et c. Я могу получить MerthodTable без каких-либо проблем для любых других классов, кроме массивов.
Вот код, который я использую для получения указателя таблицы методов, и как убедиться, что он работает
private static unsafe int* GetMethodtable<T>(T obj) {
var referenceForObject= __makeref(obj);
return (int*)(*(int*)*((int*)&referenceForObject));
}
var instance = new MyClass();
var methodtableAddress = (int*)*GetMethodtable(instance);
var @equals = (int*)typeof(MyClass).TypeHandle.Value == methodTableAddress;
В приведенном выше код @equals
равен true
для любого другого класса, кроме типов массивов. У меня вопрос, как получить methodTableAddress для типов массивов, используя указатель на объект?