You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Xamarin Android原生绑定Kotlin构造函数遇DefaultConstructorMarker参数问题

解决Xamarin Android绑定中构造函数出现DefaultConstructorMarker参数的问题

这个DefaultConstructorMarker参数是Xamarin绑定生成器的产物——当你绑定的Java类没有公开的无参构造函数时,绑定工具会自动生成带该标记的构造函数,用来在特殊场景下模拟无参构造的调用逻辑,你不需要手动创建这个参数的实例,按以下场景处理即可:

场景1:原Java类实际存在无参构造

如果原Java类有公开的无参构造,但绑定生成时未正确识别,需要修改绑定项目的Metadata.xml文件,手动修正构造函数的可见性:

<metadata>
  <!-- 替换成你的包名和类名 -->
  <attr path="/api/package[@name='com.your.target.package']/class[@name='YourTargetClass']/constructor[@name='YourTargetClass' and count(parameter)=0]" name="visibility">public</attr>
</metadata>

修改后重新生成绑定项目,就能得到正常的无参构造函数。

场景2:原Java类确实没有无参构造

直接使用Java类提供的其他带参数的构造函数创建实例即可,不要尝试调用带DefaultConstructorMarker的构造。比如原Java类有public YourClass(Context context),绑定后在C#中这样调用:

var context = Android.App.Application.Context;
var instance = new YourClass(context);

场景3:必须使用无参构造(特殊情况)

如果Java类内部存在非公开的无参构造,或你需要通过反射/特殊逻辑触发无参构造,可以直接传递null给DefaultConstructorMarker参数,因为它仅作为标记使用,不参与实际Java层的构造逻辑:

var instance = new YourClass(null);

内容的提问来源于stack exchange,提问作者Sivagnanam Subramani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 12:00:22