.NET MAUI中无法展示InterstitialAd,重写OnAdLoaded遇编译错误
解决重写
OnAdLoaded()时的编译错误问题 针对你遇到的“找不到合适的重写方法”错误,以下是几种排查和解决思路:
1. 显式指定类型的命名空间
最常见的原因是类型混淆——项目中可能存在同名的InterstitialAd或InterstitialAdLoadCallback类型(比如来自其他库或自定义类)。请在相关代码中显式指定AdMob官方类型的命名空间Android.Gms.Ads:
修改后的回调类代码:
private class MyInterstitialAdLoadCallback : Android.Gms.Ads.InterstitialAdLoadCallback { private readonly AdMobInterstitialAd _adMobInterstitialAd; public MyInterstitialAdLoadCallback(AdMobInterstitialAd adMobInterstitialAd) { _adMobInterstitialAd = adMobInterstitialAd; } public override void OnAdLoaded(Android.Gms.Ads.InterstitialAd ad) { _adMobInterstitialAd.interstitialAd = ad; Console.WriteLine("Ad loaded."); } public override void OnAdFailedToLoad(Android.Gms.Ads.LoadAdError error) { Console.WriteLine("Failed to load ad: " + error.Message); } }
同时确保外层类中的字段类型一致:
private Android.Gms.Ads.InterstitialAd interstitialAd;
2. 清理项目缓存并重新生成
.NET 9的绑定库偶尔会出现缓存导致的类型不匹配问题:
- 删除项目目录下的
bin和obj文件夹 - 关闭并重新打开IDE
- 重新生成整个解决方案
3. 验证NuGet包的正确性
- 确认安装的是**
Xamarin.GooglePlayServices.Ads** NuGet包,而非其他第三方AdMob相关包 - 检查包版本与.NET 9的兼容性,尝试安装最新稳定兼容版本
- 移除重复或冲突的AdMob相关NuGet包,避免版本冲突
4. 检查方法签名的完全匹配
确认重写的方法签名与基类完全一致:
OnAdLoaded的参数必须是Android.Gms.Ads.InterstitialAd,不能是接口或其他派生类型- 方法访问修饰符必须为
public override,与基类的virtual方法匹配
内容的提问来源于stack exchange,提问作者Anil
相关产品推荐
相关产品推荐

