У меня есть следующие функции c
opaque_struct* create() {}
void free(opaque_struct*) {}
, которые я хочу вызвать с помощью PInvoke:
[DllImport("test")]
public static extern IntPtr create ();
[DllImport("test")]
public static extern void free (IntPtr);
Я думаю, это будет работать нормально, но я ищу способв управляемом коде явно указывается, что «free» принимает только IntPtr, возвращенный «create», и избегает случайной передачи другого IntPtr, полученного от других функций.
Структура, на которую указывает структура, непрозрачна в отношении всего управляемого кода.
Невозможно расширить IntPtr, даже если все, что я делаю, это даю ему новое имя, без дополнительных свойств.
Есть ли способ сделать этот типизированный IntPtr?