Отражение изнутри Java
У меня есть библиотека Java, и я создал библиотеку Bindings с помощью Xamarin. Все работает, но у меня есть небольшая проблема с отражением. Вот упрощенный вид
В Java:
JavaClass {
public Object delegate;
public String methodName;
public void executeMethod() {
delegate.getClass().getMethod(methodName).invoke(); //simplified
}
}
В Xamarin:
CSharpActivity {
protected override void onCreate(Bundle b){
JavaClass c = new JavaClass ();
c.Delegate = this;
c.MethodName = "MethodOnMe";
c.ExecuteMethod();
}
public void MethodOnMe(){
}
}
Это душит эффектно, потому что methodOnMe
не найден Java. В любом случае, как это сделать?
1 ответ
Хорошо. Для тех из вас, кто наткнулся на это - нужно добавить атрибут экспорта.
[Java.Interop.Export("MethodOnMe")]
public void MethodOnMe(){
В дополнение к вышесказанному, решение некоторых других проблем, с которыми мы столкнулись здесь: http://blog.androidjetpack.com/post/Android-DataGrid-Xamarin-Support-Added-Java-Binding-Project-Issues.aspx