首页 > 解决方案 > 创建自定义渲染器时出现 TypeLoadException

问题描述

我在 Xamarin.Forms (4.7.0) 中创建了一个 Android 应用程序,我想在其中实施 AdMob 中的广告。为此,我必须围绕我之前创建的 View 类创建一个 ViewRenderer 包装器。一旦我将此行添加到 ViewRenderer

[assembly: ExportRenderer(typeof(AdBanner), typeof(AdBanner_Droid))]

然后构建并启动应用程序,我收到此错误:

System.TypeLoadException: 'Could not load type DDKTCKE.Controls.AdBanner, APP_NAME, Version=1.2.2.0, Culture=neutral, PublicKeyToken=null while decoding custom attribute: (null)'

我已经尝试过:

  1. 删除 bin 和 obj 文件夹
  2. 从测试设备中擦除数据
  3. 清洗溶液

A 还在一个新的空白项目中使用了完全相同的代码,并且它可以正常工作。什么可能导致我的主要项目出现问题?我应该调查什么?

标签: c#xamarinxamarin.forms.net-assembly

解决方案


要实现 Android 渲染器,需要两个类;Forms 项目中的AdBanner类(或作为对 Forms 项目的项目引用的 Netstandard 项目)和AdBannerRendererAndroid 项目中的类:

AdBanner:

using Xamarin.Forms;

namespace MyProject
{
    public class AdBanner: View
    ...

AdBannerRenderer:

using Android.Gms.Ads; 
using Xamarin.Forms; 
using Xamarin.Forms.Platform.Android;
using AdBanner = MyProject.AdBanner; 

[assembly: ExportRenderer(typeof(AdBanner), typeof(Droid.Renderers.AdBannerRenderer))] 
namespace Droid.Renderers 
{ 
    public class AdBannerRenderer : ViewRenderer<AdBanner, AdView> 
    ...

推荐阅读