Xamarin.Android Binding错误收集及解决方法
2019-10-06 本文已影响0人
丿幻想天空
- error CS0102: The type 'XxxEventArgs' already contains a definition for 'P0'
原因:
A. 在Java接口中,一般写法可能会有类似方法重写的写法(如下接口A),而java接口方法在绑定成c#接口的时候会自动生成委托(delegate)和委托参数(EventArgs),委托参数一般会以方法名称加EventArgs继承自System.EventArgs,比如java中方法名称为onComplete,则生成委托参数类名为CompleteEventArgs,这样如果一个接口中有多个同名方法的话就会出现这种绑定错误。
B. 如果同一个包下有多个接口的方法名称相同的话也会出现这种绑定错误,如一下接口A和B。
解决方法:修改方法名称(a)或者委托参数类名(b)
a. <attr path="/api/package[@name='xxx.xxx.xxx']/interface[@name='Xxx']/method[@name='onComplete']" name="managedName">onCompleted</attr>
b. <attr path="/api/package[@name='xxx.xxx.xxx']/interface[@name='Xxx']/method[@name='onComplete']" name="argsType">UICompleteEventArgs</attr>
// java接口
public interface AListener {
void onComplete(int arg);
void onComplete(int arg, int source);
}
public interface BListener {
void onComplete(int arg);
}