Pergunta

Eu queria converter um código c # para j # e, de alguma forma, consegui superar dllimport e marshalas.

O problema é que quando uma função tem uma referência a um objeto - ref não é reconhecida

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

Qualquer pessoa tem alguma experiência com j # e sabe enviar referências para um método (ou definir um tipo em um método como referência)

Foi útil?

Solução

Tenho certeza de que você não pode fazer isso diretamente.

Tudo é passado por valor em Java real e, provavelmente, em J # também.

Em versões recentes do Java você pode contornar a restrição usando AtomicReference, mas duvido muito que o J # esteja atualizado o suficiente para suportar isso.

Você pode tentar alterar a assinatura do método para aceitar uma matriz Type[] de elemento único e, em seguida, modificar esse elemento da matriz.Isso permitiria obter um resultado semelhante ao ref.A desvantagem é que você precisa alterar o site de chamada e o próprio método para agrupar e desembrulhar a variável no array.(Embora você possa criar seu próprio tipo personalizado para encapsular o acondicionamento e desembrulhamento, se isso simplificar as coisas.)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top