Здравствуйте!
Пытаюсь перевести код из С# в VB.Net. Проблема в том, что в оригинальном коде C# используются указатели на функции в неуправляемой памяти. Для наглядности приведу код:
public unsafe int get_NumberFaces()
{
return **(((int*) this._nativePointer))[16](this._nativePointer);
}
где _nativePointer объявлен как:
protected internal unsafe void* _nativePointer;
При попытке перевести код в VB.Net с помощью Reflector'а получается следующее:
Public Function get_NumberFaces() As Integer
Return *DirectCast(Me._nativePointer, Integer*)(16)(Me._nativePointer)
End Function
Естественно, данный код в VB.Net не работает, т.к. среда в месте где (16) пытается найти свойство по умолчанию для _nativePointer. Судя по IL коду данной функции берется адрес поля _nativePointer и к нему добавляется эти (16) байт и оттуда вызывается:
calli method unmanaged stdcall int32 *(void*)
Но как это реализовать в VB.Net не представляю, или может я вообще всё не так понимаю? Подскажите кто разбирается, или дайте ссылку где об этом можно почитать.