我有一个Java库,并且使用Xamarin创建了Bindings DLL。一切正常,但我对反思的看法不大。这是简化的视图
在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(){
}
}
这很令人窒息,因为Java找不到
methodOnMe
。有什么办法做到这一点? 最佳答案
确定对于那些对此迷迷糊糊的人-需要添加导出属性。
[Java.Interop.Export("MethodOnMe")]
public void MethodOnMe(){
除了上述内容,还可以解决我们在这里遇到的其他一些问题:
http://blog.androidjetpack.com/post/Android-DataGrid-Xamarin-Support-Added-Java-Binding-Project-Issues.aspx