C# Xamarin结合文库';覆盖层';:成员名称不能与其封闭类型相同
我需要重命名字段“覆盖”,但不删除。 我正在尝试将本机jar库链接到xamarin dll。 我正在创建新的绑定库项目,并在其中包含jar文件。 但当我尝试构建解决方案时,系统输出窗口出现错误 “覆盖”:成员名称不能与其封闭类型相同 我尝试用以下方式配置元数据文件C# Xamarin结合文库';覆盖层';:成员名称不能与其封闭类型相同,c#,android,xamarin,dll,binding,C#,Android,Xamarin,Dll,Binding,我需要重命名字段“覆盖”,但不删除。 我正在尝试将本机jar库链接到xamarin dll。 我正在创建新的绑定库项目,并在其中包含jar文件。 但当我尝试构建解决方案时,系统输出窗口出现错误 “覆盖”:成员名称不能与其封闭类型相同 我尝试用以下方式配置元数据文件 <metadata> <remove-node path="/api/package[@name='Com.Cdcom.Naviapps.Progorod']/class[@name='Overlay']/metho
<metadata>
<remove-node path="/api/package[@name='Com.Cdcom.Naviapps.Progorod']/class[@name='Overlay']/method[@name='Overlay']" />
</metadata>
或
或者我正在尝试改变方法
<enum-method-mappings>
<mapping jni-class="/api/package[@name='com.cdcom.naviapps.progorod']/class[@name='Overlay']">
<method jni-name="Overlay" parameter="return" clr-enum-type="Android.OS.Overlay" />
</mapping>
</enum-method-mappings>
但我有另一个错误
“generator.exe”已退出,代码为-532462766
您可以从下面的第一个错误中看到该类
// Metadata.xml XPath class reference: path="/api/package[@name='com.cdcom.naviapps.progorod']/class[@name='Overlay']"
[global::Android.Runtime.Register ("com/cdcom/naviapps/progorod/Overlay", DoNotGenerateAcw=true)]
public partial class Overlay : global::Java.Lang.Object {
//region "Event implementation for Com.Cdcom.Naviapps.Progorod.Overlay.IOnOverlayListener"
public event EventHandler<global::Com.Cdcom.Naviapps.Progorod.Overlay.OverlayEventArgs> Overlay {
add {
global::Java.Interop.EventHelper.AddEventHandler<global::Com.Cdcom.Naviapps.Progorod.Overlay.IOnOverlayListener, global::Com.Cdcom.Naviapps.Progorod.Overlay.IOnOverlayListenerImplementor>(
ref weak_implementor___SetOnOverlayListener,
__CreateIOnOverlayListenerImplementor,
__v => OnOverlayListener = __v,
__h => __h.Handler += value);
}
remove {
global::Java.Interop.EventHelper.RemoveEventHandler<global::Com.Cdcom.Naviapps.Progorod.Overlay.IOnOverlayListener, global::Com.Cdcom.Naviapps.Progorod.Overlay.IOnOverlayListenerImplementor>(
ref weak_implementor___SetOnOverlayListener,
global::Com.Cdcom.Naviapps.Progorod.Overlay.IOnOverlayListenerImplementor.__IsEmpty,
__v => OnOverlayListener = null,
__h => __h.Handler -= value);
}
}
//endregion
}
//Metadata.xml XPath类引用:path=“/api/package[@name='com.cdcom.naviapps.progorod']/class[@name='Overlay']”
[全局::Android.Runtime.Register(“com/cdcom/naviapps/progorod/Overlay”,DoNotGenerateAcw=true)]
公共部分类覆盖:global::Java.Lang.Object{
//区域“Com.Cdcom.Naviapps.Progorod.Overlay.IOnOverlayListener的事件实现”
公共事件事件处理程序覆盖{
加{
全局::Java.Interop.EventHelper.AddEventHandler(
ref弱\u实现者\uuuuu设置覆盖侦听器,
__CreationOverlayListenerImplementor,
__v=>OnOverlayListener=\uu v,
__h=>uu h.Handler+=值);
}
除去{
全局::Java.Interop.EventHelper.RemoveEventHandler(
ref弱\u实现者\uuuuu设置覆盖侦听器,
全局::Com.Cdcom.Naviapps.Progorod.Overlay.IOnOverlayListenerImplementor.\uu IsEmpty,
__v=>OnOverlayListener=null,
__h=>\uu h.Handler-=值);
}
}
//端区
}
原始java代码
public class Overlay
{
public List<OverlayItem> getItems()
{
return this.mOverlayItems;
}
public OnOverlayListener getOnOverlayListener()
{
return this.mOverlayListener;
}
public void populate()
{
double[] latlon = new double[this.mOverlayItems.size() * 2];
int d = 0;
for (OverlayItem oi : this.mOverlayItems)
{
latlon[(d++)] = oi.getGeoPoint().getLatitude();
latlon[(d++)] = oi.getGeoPoint().getLongitude();
}
Native.populateOverlay(this.mId, latlon);
}
public void setBitmap(Bitmap bitmap, float xOffset, float yOffset, boolean isPlain, int sizeInMeters)
{
int width = 0;
int height = 0;
int[] pixels = null;
if (bitmap != null)
{
width = bitmap.getWidth();
height = bitmap.getHeight();
pixels = new int[width * height];
bitmap.getPixels(pixels, 0, width, 0, 0, width, height);
}
Native.setOverlayBitmap(this.mId, width, height, pixels, xOffset, yOffset, isPlain, sizeInMeters);
}
public void setOnOverlayListener(OnOverlayListener listener)
{
this.mOverlayListener = listener;
}
public static int SPECIAL_OVERLAY_START_ROUTE = -1;
public static int SPECIAL_OVERLAY_FINISH_ROUTE = -2;
public static int SPECIAL_OVERLAY_ROUTE_SPRITE = -3;
public static int SPECIAL_OVERLAY_GEOBLOG_SPRITE = -4;
private static int SPECIAL_OVERLAYS_COUNT = 4;
public static Overlay specialOverlay(int id)
{
if (mSpecialOverlays[(id + SPECIAL_OVERLAYS_COUNT)] == null)
{
mSpecialOverlays[(id + SPECIAL_OVERLAYS_COUNT)] = new Overlay();
mSpecialOverlays[(id + SPECIAL_OVERLAYS_COUNT)].mId = id;
}
return mSpecialOverlays[(id + SPECIAL_OVERLAYS_COUNT)];
}
protected int getId()
{
return this.mId;
}
protected int mId = mNextId++;
private static int mNextId = 1;
private List<OverlayItem> mOverlayItems = new ArrayList();
private OnOverlayListener mOverlayListener;
private static Overlay[] mSpecialOverlays = new Overlay[SPECIAL_OVERLAYS_COUNT];
public static abstract interface OnOverlayListener
{
public abstract void onOverlayEvent(Overlay paramOverlay, OverlayItem paramOverlayItem);
}
}
公共类覆盖
{
公共列表getItems()
{
返回此.mOverlayItems;
}
公共OnOverlayListener getOnOverlayListener()
{
返回this.moverlaystener;
}
公共空白填充()
{
double[]latlon=new double[this.mOverlayItems.size()*2];
int d=0;
对于(覆盖项oi:this.mOverlayItems)
{
latlon[(d++)]=oi.getGeoPoint().getLatitude();
latlon[(d++)]=oi.getGeoPoint().getLongitude();
}
Native.populateOverlay(this.mId,latlon);
}
public void setBitmap(位图位图、浮点xOffset、浮点yOffset、布尔isPlain、int sizeInMeters)
{
整数宽度=0;
整数高度=0;
int[]像素=空;
if(位图!=null)
{
宽度=位图.getWidth();
高度=位图.getHeight();
像素=新整数[宽度*高度];
getPixels(像素,0,宽度,0,0,宽度,高度);
}
Native.setOverlayBitmap(this.mId、宽度、高度、像素、xOffset、yOffset、isPlain、sizeInMeters);
}
公共void设置OnOverlayListener(OnOverlayListener侦听器)
{
this.moverlaystener=listener;
}
公共静态int特殊覆盖\u开始\u路由=-1;
公共静态int特殊覆盖图完成路径=-2;
公共静态int特殊覆盖路径SPRITE=-3;
公共静态int-SPECIAL\u-OVERLAY\u-GEOBLOG\u-SPRITE=-4;
专用静态int专用覆盖计数=4;
公共静态覆盖专用LoverLay(int id)
{
如果(MSSpecialOverlays[(id+特殊覆盖\U计数)]==null)
{
msSpecialOverlays[(id+特殊覆盖层计数)]=新覆盖层();
MSSpecialOverlays[(id+特殊覆盖层计数)]。mId=id;
}
返回MSSpecialOverlays[(id+特殊重叠计数)];
}
受保护的int getId()
{
把这个还给我;
}
受保护的int mId=mNextId++;
私有静态int mNextId=1;
private List mOverlayItems=new ArrayList();
私有OnOverlayListener-mOverlayListener;
私有静态覆盖[]MSSpecialOverlays=新覆盖[特殊覆盖计数];
OverlayListener上的公共静态抽象接口
{
OverlayeEvent上的公共摘要无效(OverlayeParamOverlaye,OverlayeItem ParamOverlayeItem);
}
}
能否请您将原始Java代码发布在com.cdcom.naviapps.progorod.Overlay
中?谢谢,我添加了Java源代码。
public class Overlay
{
public List<OverlayItem> getItems()
{
return this.mOverlayItems;
}
public OnOverlayListener getOnOverlayListener()
{
return this.mOverlayListener;
}
public void populate()
{
double[] latlon = new double[this.mOverlayItems.size() * 2];
int d = 0;
for (OverlayItem oi : this.mOverlayItems)
{
latlon[(d++)] = oi.getGeoPoint().getLatitude();
latlon[(d++)] = oi.getGeoPoint().getLongitude();
}
Native.populateOverlay(this.mId, latlon);
}
public void setBitmap(Bitmap bitmap, float xOffset, float yOffset, boolean isPlain, int sizeInMeters)
{
int width = 0;
int height = 0;
int[] pixels = null;
if (bitmap != null)
{
width = bitmap.getWidth();
height = bitmap.getHeight();
pixels = new int[width * height];
bitmap.getPixels(pixels, 0, width, 0, 0, width, height);
}
Native.setOverlayBitmap(this.mId, width, height, pixels, xOffset, yOffset, isPlain, sizeInMeters);
}
public void setOnOverlayListener(OnOverlayListener listener)
{
this.mOverlayListener = listener;
}
public static int SPECIAL_OVERLAY_START_ROUTE = -1;
public static int SPECIAL_OVERLAY_FINISH_ROUTE = -2;
public static int SPECIAL_OVERLAY_ROUTE_SPRITE = -3;
public static int SPECIAL_OVERLAY_GEOBLOG_SPRITE = -4;
private static int SPECIAL_OVERLAYS_COUNT = 4;
public static Overlay specialOverlay(int id)
{
if (mSpecialOverlays[(id + SPECIAL_OVERLAYS_COUNT)] == null)
{
mSpecialOverlays[(id + SPECIAL_OVERLAYS_COUNT)] = new Overlay();
mSpecialOverlays[(id + SPECIAL_OVERLAYS_COUNT)].mId = id;
}
return mSpecialOverlays[(id + SPECIAL_OVERLAYS_COUNT)];
}
protected int getId()
{
return this.mId;
}
protected int mId = mNextId++;
private static int mNextId = 1;
private List<OverlayItem> mOverlayItems = new ArrayList();
private OnOverlayListener mOverlayListener;
private static Overlay[] mSpecialOverlays = new Overlay[SPECIAL_OVERLAYS_COUNT];
public static abstract interface OnOverlayListener
{
public abstract void onOverlayEvent(Overlay paramOverlay, OverlayItem paramOverlayItem);
}
}