Вопрос

Я хотел преобразовать код c # в j # и каким-то образом смог преодолеть dllimport и marshalas.

Проблема в том, что функция имеет ссылку на объект - ссылка не распознается

<цитата>

public static native int Mathod (ref Type type, int flags);

Любой человек имеет опыт работы с j # и знает, как отправлять ссылки на метод (или определять тип в методе как ссылку)

Это было полезно?

Решение

Я почти уверен, что вы не можете сделать это напрямую.

Все передается по значению в реальной Java, и, предположительно, в J # тоже.

В последних версиях Java можно обойти ограничение, используя AtomicReference, но я очень сомневаюсь, что J # достаточно актуален, чтобы поддерживать это.

Вы можете попробовать изменить сигнатуру метода, чтобы она принимала одноэлементный массив Type[], а затем измените этот элемент массива.Это позволит вам достичь результата, аналогичного генерации кода кода.Обратной стороной является то, что вам нужно будет изменить сайт вызова и сам метод, чтобы обернуть и развернуть переменную в массиве.(Хотя вы можете создать свой собственный тип для инкапсуляции упаковки и разворачивания, если это упростит задачу.)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top